鏈表的知識點,我就不多說了
寫這篇文章也是作為一種學習筆記,為了以后復習好用
所以我就簡單說一下,我在這邊遇到的一些問題和解決方案
1.創建一個鏈表就是:頭指針-->結點1-->結點2-->結點3-->............
2.新創建一個結點,比如叫它New_node,其實就是在一個地方申請了一塊空間,在這塊空間放進去一個數據和指針,我們再創建一個節點時還叫
New_node,雖然名字一樣,但它不會去覆蓋第一個結點,因為它又會去申請一塊空間,往里面放入指針和數據,也就是說,當第二個結點申請成功時
第一個結點就不再叫New_node了,他只是一塊空間
3.頭指針和第一個結點是相等的,比如說頭指針是L,那么L->date == 第一個結點里面的數據
代碼如下:
#include<stdio.h> #include<stdlib.h> typedef struct Node { char date; struct Node *next; } Node , *LinkList; LinkList creat_linklist(int n)//創建一個長度為n的單鏈表 { LinkList New_node;//新節點名稱 LinkList Tail_node;//最后一個節點名稱 LinkList Head_node = NULL;//頭節點 char c; for (size_t i = 0; i < n; i++) { printf("請輸入第%d個節點的數據:",i+1); scanf("%c", &c);//讀取要插入的字符 fflush(stdin);//清空緩存 New_node = (LinkList)malloc( sizeof(Node) );//為新節點申請一塊空間 New_node->date = c; New_node->next = NULL;//順序插入的每個節點后面都沒有元素 if ( Head_node==NULL ) { Head_node = New_node;//如果插入的節點是第一個節點,就掛在頭節點后面 }else { Tail_node->next = New_node;//若插入的節點不是第一個節點,就掛在最后一個節點的后面 } Tail_node = New_node;//插入新節點后,這個已經插入的最新節點就成為了最后一個節點 } return Head_node; } int main() { LinkList L; int n; printf("請輸入鏈表節點個數:"); scanf("%d",&n); fflush(stdin);//清空緩存 L = creat_linklist(n); //打印單鏈表 while ( L != NULL ) { printf("%c" , L->date); L = L->next; } return 0; }
運行結果: