請問大神們,如何用C語言建立動態連結串列?我一點也不會啊

時間 2022-02-02 08:30:02

1樓:鐳毅

先指出幾處錯誤,你把l寫成1,1寫成l了

可以試一試!

#define null 0

#define len sizeof(struct student)struct student

; int n;

struct student *creat()/*此函式帶回一個指向連結串列頭的指標*/

p2->next=null;

return(head);}

2樓:匿名使用者

建議使用stl的list容器。自己寫連結串列的壞處有:1) 自己造的車輪不具通用性:

團隊裡的其他人不可能使用你寫的連結串列,來代替list。如果你強行使用,會給將來接手你的程式的人帶來麻煩,他會說你的**寫的爛。2)自己造的車輪不具穩定性:

你的程式肯定不如list有這麼多人使用測試,最多你自己在某方面使用過,但不能保證在其他一些特殊情況下不出錯。3)自己造的車輪不具高效性:stl基本已經將效率發揮到了極致。

你即使能寫出效率高於它的**,但一定也是犧牲了其他方面的結果。

資料結構:用c語言:建立一個帶結點的空連結串列,並輸出。

3樓:匿名使用者

#include

#include

typedef struct poi

pointer;

pointer* head,* tail;

pointer* newnode()

int main()

pointer* u=head->next;

while (u!=null)

return 0;}

c語言中建立動態連結串列要用雙重指標嗎?那個雙重指標有什麼作用?

4樓:匿名使用者

舉個例吧,

假如一個結構:linknode

初始化:initial(linknode **p);//這裡就是雙指標

那麼在呼叫就這樣,

linknode *p;

initial(&p);

原理就是,如果你要通過函式來改變某個引數的值,那麼就要傳該引數的地址進去。

這裡p是一個指標,所以要傳指標的地址進去,也就是一個指向指標的指標;

初始化函式initial(linknode *(*p));(*p)是指標,*(*p)就是傳指標的地址進去了,意思就這樣,不知道你聽不聽得懂。

不管動態還是靜態,只要是要通過函式來改變指標型別資料的值,就要用雙重指標。

5樓:匿名使用者

樓上講得不錯

再幫補充一下細節:

這樣呼叫

linknode *p = null;

initial(&p);

經過 initial(&p) 的作用後,p就不再是 null 了,而是一個真正可用的連結串列指標

關於c語言連結串列 建立動態單向連結串列時為什麼需要結構體指標p1和p2 一個頭指標不就夠了嗎,對於鏈

6樓:匿名使用者

首先,頭指標不能丟,需要

儲存的,而p1是從頭指標得到首節點後,檢視當前指向節點的next是否為空判斷是否尾節點,如果不是尾節點,或者說當前節點的next不為null則p1將被賦值成這個next以便找到連結串列下一個節點,而p1一開始儲存的頭指標就會被沖掉,所以在進行操作後p1就不能被當成鏈首指標來用了。

其次,新的節點生成,會通過new或malloc來申請空間,其返回值是個指標,這時一般要用指標變數p2來接收這個指標,然後將連結串列尾節點的next賦值成這個p2的內容,p2指向的next再賦值成null成為尾節點。

最後,如果需要在連結串列中插入,就需要一個指標p1指向當前節點,另一個p2指向當前節點之後的節點,然後將p1的next賦值成新節點指標,新節點指標的next賦值成p2,完成插入。

總體來說,所謂p1和p2是臨時輔助性的變數,是為方便使用的中間變數,這個從方便出發申請的工作變數也無需節省。

7樓:♀安若晨

建立一個動態連結串列的時候都會定義兩個結構體指標(p1 p2), 指標p2的作用一般都是用來將新結點(p1)的地址賦值給上一個結點的next成員。如:p2-> next = p1; 這個操作實現了連結串列中各個結點的關聯關係。

大神們 c語言作業求助!!!我是一點都不會啊 快哭了

8樓:匿名使用者

#include

#define print(type) printf("the size of "#type" is %d.\n",sizeof(type))

int main(void)

如何用c語言建立檔案?並按格式儲存

吉祥二進位制 儲存用fwrite 來完成,建立用fopen 來完成。示例 如下 include int main printf 輸入要建立的檔名 gets file name file fp fopen file name,at if fp null fprintf fp,s年 s月 s日 year...

關於C語言陣列的建立,C語言如何建立陣列

用一個簡單的例子試試.不知道對不對.還望高手指點struct stu boy 2 mian int i for i 0 i 2 i print n d stu.boy i num struct aa std 3 輸出for i 0 i 3 i 輸出模式基本上就這樣 typedef stuctstu ...

如何用c語言輸出檔案,如何用C語言輸出檔案?

1 c語言標準庫提供了一系列檔案操作函式。檔案操作函式一般以f 單詞的形式來命名 f是file的簡寫 其宣告位於stdio.h標頭檔案當中。例如 fopen fclose函式用於檔案開啟與關閉 fscanf fgets函式用於檔案讀取 fprintf fputs函式用於檔案寫入 ftell fsee...