當寫程式時,要求輸入n個數,如果未考慮n<=0的情況,極有可能導致段錯誤,像如下例題
7-1 單鏈表的建立及遍歷 (30分)
讀入n值及n個整數,建立單鏈表並遍歷輸出。
輸入格式:
讀入n及n個整數。輸出格式:
輸出n個整數,以空格分隔(最後乙個數的後面沒有空格)。輸入樣例:
在這裡給出一組輸入。例如:
2輸出樣例:10 5
在這裡給出相應的輸出。例如:
10 5
#include
#include
intmain()
*head=
null
,*p1=
null
,*p2=
null
; head =
(struct node*
)malloc
(sizeof
(struct node));
head->next =
null
; head->data =0;
p2=p1 = head;
int n=
0, i =0;
scanf
("%d"
,&n);if
(n<=0)
return0;
while
(i++
< n)
i =0;
head = head->next;
while
(head->next!=
null
)printf
("%d"
, head->data)
;return0;
}
剛開始,未加if(n<=0)return 0;
,導致一直段錯誤。 關於在鍊錶中的段錯誤
如若在 合併鍊錶並去除重複元素 的執行語句 while p3 data p1 data p1 p1 p1 next while p3 data p2 data p2 p2 p2 next 用來跳過鍊錶l1 l2中與新建的鍊錶重複的元素,注意如果這麼寫的話可能會出現 段錯誤 當p1跳到null的時候進...
單鏈表的鍊錶拆分
1.定義三的指標變數 p q t,p 指向原鍊錶的頭結點 head1 新建另乙個頭結點 head2,q 指向head2,t 指向head1 的next 結點,兩個頭結點的 next 都設為空。2.按照條件分配t 指向的結點,如果將這個結點連線到 head1 的鍊錶中,1 讓p的 next 指向t 2...
鍊錶的實現 單鏈表 雙鏈表
鍊錶知識的引入 對於之前我們接觸到的陣列知識,要想儲存多個物件,首先想到的一定是物件陣列。但是陣列是乙個長度固定的線性結構,一旦內容不足或者過多,都會在成記憶體資源的浪費,由此引入鍊錶充分解決資源浪費問題。class node private屬性需要設定getter setter方法 public ...