C語言連結串列問題,求解答

2022-10-08 05:56:27 字數 803 閱讀 4435

1樓:匿名使用者

struct node *create(struct node *head)

return head;

}該建表函式的邏輯關係是對的。

首先定義一個節點,且將這個結點的指標域地址賦給p1和p2(請仔細思考這句話的意思),並將讀入的資料存入資料域num,用p1->next = null;使其指向null。

如果該結點是連結串列的第一個結點(滿足head == null),則執行head = p1;,此時的連結串列是一個無頭結點的,且僅有一個結點的完整連結串列。

如果不是第一個結點,則執行p2->next = p1;,此時,新結點p1接到連結串列尾部,執行p1->next = null;,尾結點的指標域next總是指向null。

接下來執行p2 = p1;,保證p2總是指向最後的結點。

總的來說,該函式的邏輯是對的,但顯得較為混亂,首先,呼叫這個函式的方式比較滑稽。

sruct node *head = null;

head = create(head);

二來,p1、p2和head的關係顯得複雜。

就以上問題,新寫一個連結串列建立函式(有頭結點),呼叫方式 struct node *head = create();。

struct node *create(void)

p->next = null;

return head;}

2樓:七週佳琪

p2的next域指向p1,即p2的後一個是p1;

然後p2 = p1是把p1傳給p2。

這時p2已經向後移了一次了

c語言連結串列問題,c語言連結串列的問題

連結串列必須知道頭指標在哪第一個紅圈是初始化指標 因為你剛開始定義連結串列指標的時候指標指向的是隨機的 所以只能初始化 第二個紅圈是第一次給連結串列分配空間 如果頭指標為空就把連結串列指標給頭指標 這倆個語句確實只執行一次 但我沒理解你話的意思 你的理解當然不對了。前一個頭 head 尾 tail ...

C語言一些小問題,求解答c語言問題,求解答。

結果是對的。首先,funs 定在呼叫的時候形成了遞迴,所以算出來的結果就不會是5 5 1。其次,你的程式的過程可以表達為5 4 3 2 也就是說你在funs 裡遞迴呼叫了funs 在做c語言程式的時候,一定要理清思路,避免不應出現的遞迴,以免形成死迴圈,你這個呼叫如果引數錯誤,很容易出錯。第三,按你...

c語言程式設計連結串列題,c語言程式設計連結串列題

include include include typedef struct student message stu struct student message static stu head null 建立一個節點,並賦予相應的數值 stu create link node char const...