C語言連結串列初始化。下面這樣不可以嗎

2022-07-18 02:25:03 字數 2607 閱讀 2971

1樓:鷹弈

頭結點初始化有兩種方法:乙個是返回指標位址,另乙個是傳址

方法一:返回指標(建立連結串列中,這種方法比較常用)

linklist *init_list(linklist *l)//這裡是指標函式,帶引數

主函式呼叫形式為 linklist *head = init_list(head);

linklist *init_list()//這裡是指標函式,不帶引數

主函式呼叫形式 linklist *head = init_list();

方法二:利用二級指標傳址

void init_list(linklist **l)//注意現在不是指標函式(很少用)

主函式呼叫形式為 linklist *head = null;

init_list(&head);//傳址

還有另外一種比較常見的傳址形式

void init_list(linklist *i)//這裡不是指標函式

主函式呼叫形式為 linklist head;

init_list(&head);//傳址

樓主一定想問為什麼這樣吧,我只能說你先把這些方法有所了解,掌握好其中一種用法,以後的學習中看到相關書籍,自然會慢慢理解(ps:這東西也不是一下子就能全掌握的,是需要慢慢積累和應用)

2樓:十四個矮子

因為函式是不改變實參的值的,因此儘管函式體內變數l的確已經分配好記憶體,但是由於實參的值並不改變,所以實參仍舊未分配記憶體。

比如說:

linklist *p;

initlist(p);

定義時p是懸垂的,因為它未初始化,指向未知的地方,當呼叫函式後,形參l複製了p的值,然後你的函式讓l指向該新分配的記憶體,但是實參p仍舊未分配。函式結束之後,你分配給l的記憶體也找不到了,因為l在函式呼叫後被銷毀,導致了記憶體洩漏。

希望我的回答能幫你解決疑惑。

3樓:匿名使用者

不可以!

若引數改為*&l則可以.

不明白原因可以繼續追問哈!

大俠們怎麼用c語言實現初始化乙個連結串列啊~~~~~~~~~~

4樓:匿名使用者

看看一些c語言書上都有啊!

c語言 初始化連結串列的巨集 20

5樓:

你太幽默了

定義成巨集還不如直接寫在主函式裡

6樓:匿名使用者

定義乙個函式初始化連結串列就行了啊,要定義成巨集,難道要函式指標?

7樓:頂峰風光無限

看看計算機教程:資料結構,就都明白了。

c語言資料結構單鏈表初始化

8樓:

之後從後往前建立連結串列!!剛開始是l->next =null

要注意p是每次新建的節點,這樣從後往前以此建立連結串列,只要明白p是每次新建的節點,和從後往前建立,就會明白的!!給你花了張圖!!

9樓:亂世同人

這裡l節點只是作為頭結點用 並不存放資料,每新加入乙個節點,就把該節點新增到l頭結點的下面乙個節點。開始時l節點當然初始化為空

c語言單鏈表初始化問題

10樓:戎荏苒

這裡q是什麼,q是形參,你無論怎麼變q,出了函式傳進來的值還是不變。假如node是乙個int,你傳入乙個int* q,你要改變q是不是用*q=0;

一樣的,在這個例子裡,我會傳入乙個node** q ,然後所有q改成*q 來實現。

表達能力不行,反正就那意思吧。應該沒錯,嗯。

c語言 雙向連結串列的初始化和輸入

11樓:匿名使用者

兩個函式都有問題

初始化函式的問題在於,c語言函式引數的傳遞是傳值的,你的函式中這樣去操作引數是無效的。可如下改

void initdlist(dlist *l)則以後呼叫時,可如下

dlist dlist;

initdlist(&dlist);

第二個函式主要是插入有問題,將p2插入到p1的後面,可以這樣做p2->next=p1->next;

p1->next=p2;

p2->prior=p1;

p2->next->prior=p2;

12樓:測控_小菜鳥

不太同意樓上說的,dlist本來就是用作指標宣告吧,,,我感覺主要還是後面的函式,

應該把p2->next=null;刪掉,

並且在p1->next=p2;前面加上

p2->next=p1->next;

p2->next->prior=p2;

初始化連結串列l c語言的 怎麼寫 求大神

13樓:風若遠去何人留

連結串列初始化分為帶頭節點和不帶頭節點兩種

初始化的時候 都是空連結串列

對於不帶頭節點的

直接初始化為null即可

對於帶頭節點的 一般是定義乙個頭結點變數, next賦值null即可。

c語言陣列初始化,C語言陣列的初始化表示方法

陣列的編號是從0開始的,所以當i 2時,score 2 實際是第三個數,前面還有score 0 和score 1 兩個數。c語言陣列的初始化表示方法 在c語言中,陣列的初始化有以下幾種方式 1 定義的時候同時初始化 int array 10 2 定義的時候不指定陣列大小,由初始化的陣列元素來確定大小...

C語言簡單問題C語言為什麼在開頭初始化變數和在for迴圈裡初始化變數不同呢

因為你的後兩個for迴圈執行了多次,j和k第一次執行各自迴圈的時候都為零沒錯,但是當第二次執行到它們迴圈時j和k 的值都為wide了,所以就不會執行迴圈體,才會導致第一種情況,望採納!比如 int x 1 for int i 1 i 3 i 這裡baix只初始du化zhi了dao一次.輸出專 屬 2...

c 帶參建構函式怎麼初始化資料成員

應該是 name name 即把建構函式中的引數傳遞給類的私有成員 char name,這樣,在主函式中 int main person person char name 再給你寫個析構把,自己申請的空間必須自己釋放掉。person person 沒編譯,你試下不知道有沒有問題 name在建構函式分...