1樓:匿名使用者
q=head->next; //q指向頭結點head->next=p; //頭結點指向pp->next=q;
把p放到head的下節點
c語言p=l;是什麼意思,還有p=l->next;是什麼意思,這兩個語句有什麼區別,l為連結串列的頭結點 5
2樓:匿名使用者
以後問的時候希望再說的清楚一點
問這個問題看來你c的知識瞭解的還不是很夠,連結串列的知識也有點貧乏啊連結串列的話 這裡p,l的型別應該都是自己定義的結構體 node大致struct node
node這個結構體裡存放了兩個變數,
entry就是節點的內容,next是一個node型指標,存放著下一個節點的地址,指向下一個節點
而所謂連結串列就是一串節點連在一起,像陣列一樣,比陣列的優點就是比如在陣列中間要插入一個數的話,插入位置之後的每一個元素都要向後移一位,而連結串列的話只需要修改插入位置前的節點的指標就可以了。
你這裡的兩個語句都是簡單的賦值,p = l;就是把讓自己定義的node p = 頭結點,
而p = l->next就是讓p = 頭結點的後一個節點。
這裡 ->是結構體中的運算子,表示使用這個結構體中的某個指標變數。
3樓:紅領巾飄過
p=l是讓p指向l這個節點。 p=l->next是讓p指向l的下一個節點。首先連結串列定義中next的定義必須是指向l型別的指標。
c語言,編寫程式。已知head指向一個帶頭結點的單向連結串列,連結串列中每個結點包含資料域(date)和指
4樓:匿名使用者
#include
#include
typedef struct _node
node,*list;
int getmax_value(list head)node *ptr = head->next;
int max = ptr->data;
while (ptr->next != null)}return max;
}node* getmax_address(list head)node *ptr = head->next;
node *max_address = ptr;
while (ptr->next != null)}return max_address;
}list creatlist(int num)//num為建立節點個數
return head;
}void freelist(list head)}int main()
c語言建立了一個連結串列函式,如何儲存這個連結串列的頭結點?
5樓:約定
head=(node*)malloc(sizeof(node));/ /建立頭結點
head->next=null;
while(n--)
追問能不能詳細一點呢
追答#include "stdio.h"
typedef int datatype;
typedef struct link_nodenode;
main()
if(!head->next) printf("\n單連結串列是空的!\n");
else
}printf("\n");}
6樓:匿名使用者
建立一個空的頭節點,在程式中儲存成全域性或者區域性變數。
c語言單連結串列,有幾句程式不明白意思,能否教一下! 程式功能:帶頭結點的單連結串列中尋找最小值結點.
7樓:匿名使用者
pre實際上是用來儲存那個最小節點q的前一個節點,當上面那個while語句做完了後q必定為最小節點,pre恰為q的前驅,pre->next=q->next這句實際上就是在改變q的前驅節點的指向,讓q的前驅
pre指向它的下一個節點(因為要將最小節點q放到表頭去,為保持連結串列的完整性,所以先將它的前驅pre移向最小節點q的下一節點)。
8樓:匿名使用者
如果直接看的話肯定是看的很吃力的,你可以拿筆畫一下每個節點的指向關係,還有程式執行時候的指向關係,應該就有更好的瞭解了
c語言關於結點的插入和刪除~新生求解釋,麻煩大家了
9樓:匿名使用者
將結點p插入頭結點h之前
為什麼是
p->next = head;//將新增結點p的next指向head,這一步將新增的結點p加入了連結串列,但是還不能通過head在連結串列中被找到。
head = p;//更新head結點,這時候把head指向了結點p,而結點p指向了原來的head結點,這時新結點p已經可以通過head在連結串列中查詢到了。
指標q指向頭結點,要刪除此結點為什麼是
h = h->next;//在執行這一步之前,肯定要先用一個變數q將當前頭結點儲存下來,否則在執行這一步後將出現原來的頭結點因為失去引用而產生記憶體洩漏。這一步的主要作用是移動頭結點。
free(q);//釋放原頭結點所佔用的記憶體,你可能問為什麼在這裡使用q釋放,而不是一開始就直接來個free(h)完事。這是因為如果你直接這樣做那麼h所指向那個結點的記憶體將被釋放成為h=null,但是h結點之後的那些結點所佔用的記憶體卻並沒有釋放,結果就是那些記憶體失去了引用。產生記憶體空間洩漏。
10樓:匿名使用者
打個比方,有兩座橋(橋連線),三座島(島是結點)
a-->b-->c.我要拆了爆了島b使島a,c直接連線,變成a-->b。
那麼我就要在爆b進,把b->next這個c的方向告訴a,不然爆了b,我就找不到c了。所以直接可以這樣a-->next = b-->next free(b);
11樓:匿名使用者
head指向第二個節點,所以第一個節點插入head節點前應將其next指標指向head(第二個節點)
然後更新頭結點,將p設定為第一個節點.
c語言程式連結串列建立在執行過程輸入第一個結點的內容之後停止工作
12樓:saber劍鬆
你這個程式錯誤很多,首先頭結點沒有具體數值,你仔細看一下,還有就是head=head->next;//修正頭指標的位置
free(pnewelement);//釋放資源
也就是說你這個動態連結串列只有一個頭結點,而且沒有數值,同時你又釋放了它的記憶體空間,等同於你根本沒有建立這個連結串列,也就是說,就沒有你後來的輸出連結串列了
c語言資料結構 不知道錯**了 最後輸出有問題, 頭結點移到鏈尾
13樓:
// 合併連結串列b到連結串列a中。要求a是增序表或空表。不破壞b表資料。
void merge(struct student *a,struct student *b) }if(flag) }}
c語言如何刪除連結串列頭節點?
14樓:覃寞
這種刪除方法是頭節點存放值的,這樣可以清楚的看到是否刪除掉了頭節點。
用p儲存頭節點 p=head;
head指向下一個節點,成為新的頭節點 head=p->next;
釋放原來的頭節點 free(p);
#include
#include
#include
void printlist(struct node *head);
struct node* delhead(struct node *head);
struct node;
int main()
printlist(head);
head=delhead(head);
printlist(head);
system("pause");
return 0;
}//刪除頭結點
struct node* delhead(struct node *head)
//列印連結串列
void printlist(struct node *head)printf("\n");}
15樓:匿名使用者
將定義一個新的指標, 賦值給這個指標第二個節點
然後刪除頭節點 資料段 等,將頭節點賦值成 這個新的指標指向的節點就行了
16樓:匿名使用者
struct a
struct a* head;//指向頭結點
則刪除頭結點過程:
17樓:豆大根深
p->a,其中p為指向連結串列的指標, a為連結串列表頭節點,假如後續連結串列為:
a->b;
b->c;
c->d;
要刪除連結串列頭節點的話,修改p的指向位置即可:
p->a => p->b;
18樓:匿名使用者
表節點a -》頭節點b-》首節點c
**表節點沒資料
point p=a->nex;
a->next=p=>next;
free(p);
在C語言中是什麼意思,C語言中 c 是什麼意思?
勢如雲 這是c語言的邏輯運算子 異或 這個 講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷...
C語言中 是什麼意思,C語言中 和 是什麼意思
藝蝸楓 c語言中 是複合賦值運算子。複合賦值運算子就是在簡單賦值符 之前加上其它運算子構成,例如 即 a 1 等價於a a 1。的意思就是把左邊的第一個符號移到右邊,其實就是b b c的意思。直接把b c的b 移到右邊,將b的值取出再取出c的值,相加然後賦給b,儲存在b開闢的記憶體空間中,類似的還有...
c語言中sizeof是什麼意思,C語言中sizeof是什麼意思
肥仙女 sizeof是c語言中保留關鍵字,也可以認為是一種運算子,單目運算子。常見的使用方式 int a 10 int arr 1,2,3 char str hello int len a sizeof a int len arr sizeof arr 結果是 len a 4,len arr 12,...