要使用鍊錶,就要先建立乙個鍊錶,這裡只說單鏈表。先介紹一下頭插法建立單鏈錶鏈表。假如我們現在要在鍊錶中插入一些資料:1、2、3、4、5,並從鍵盤輸入這些資料,
最後資料存入到鍊錶中是反過來的,即,因為頭插法每次都是在頭部插入資料的,先插入1,此時表中資料為;接著在頭部插入2,此時表中資料資料為;
再在頭部插入3,此時表中資料資料為;以此類推,最後,表中資料的順序和你輸入的順序是相反的。
為了弄明白頭插法的原理,我在網上找了一張圖來幫助理解頭插法,看圖
所謂頭插法,就是每次新加入的節點,都插入在表頭結點的後面,插在表中第乙個結點的前面,圖中obj結點就插在了a0結點的前面,以此類推。最後你會發現表中資料的順序與
你輸入的資料順序是相反的。
而頭插法建立鍊錶又分為兩種情況,一種是已知節點個數,還有一種是未知節點個數,下面用**來展示一下。先說一下未知結點個數的情況,即不確定輸入的結點個數,看**
1 #include2 #include3 typedef struct結果如下:lnode
4lnode,*linklist;89
linklist create_linklist()
10while((ch=getchar())!='\n');
27return
head; //返回頭指標
28}
29int
main()
3039 printf("\n"
);40
return0;
41 }
還有在已知結點個數的情況下,用**展示一下
1 #include2 #include3結果如下:#define n 10 //
結點個數
4 typedef struct
lnode
5lnode,*linklist;
910 linklist create_linklist()
1124
return
head;
25}
26int
main()
2736 printf("\n"
);37
return0;
38 }
通過觀察兩次的結果,可以看出用頭插法建立鍊錶時都會產生這種情況:即插入的資料與插入的順序相反。
頭插法建立鍊錶
include include typedef struct lnode lnode,linklist lnode int tail insert linklist l,int n int tail insert linklist l,int n static lnode l int headins...
頭插法建立鍊錶
介紹下頭插法建立鍊錶c 實現。說明 頭插法建立的鍊錶元素順序是和輸入的順序相反的,如果要順序保持一致,建議用尾插法。ifndef headinsert h define headinsert h include using namespace std typedef int keytype type...
頭插法建立鍊錶
問題描述 用c語言實現頭插法建立鍊錶 include include void main struct node p,q,k,h int n,x,m,b 0 printf 請輸入鍊錶的長度 scanf d m printf 請輸入鍊錶的值 scanf d n p struct node malloc...