鏈表的知識點,我就不多說了
寫這篇文章也是作為一種學習筆記,為了以后復習好用
所以我就簡單說一下,我在這邊遇到的一些問題和解決方案
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;
}
運行結果:

