1 宣告乙個鍊錶節點的結構體
struct node
為什麼要這麼申明呢? 分析一下鍊錶的結構就能看出來。鍊錶是由乙個個節點組成的,每個節點中包含著儲存的資料data,還有下乙個節點的位址next,
所以,只要找到鍊錶的頭節點,就能乙個乙個把所有節點的資料讀出來了。
2
生成頭節點
初始化乙個節點,使它作為頭節點,
struct node *head;
head=(struct node *)malloc(sizeof(struct node));
head->next=null;
因為頭節點的後面沒有其他的節點了,所以next賦為空。
(注意:鍊錶的末尾的next必須保證為空(迴圈鍊錶除外),否則會發生記憶體洩露)
接下來給頭節點賦值;
scanf("%d",&head->data);
因為我們在插入新的節點的時候,必須知道在鍊錶的哪個節點的後面插入。所以還需要知道尾節點是哪個。
到這裡,節點只有乙個,所以頭節點就是鍊錶的尾節點。
struct node * tail;
tail=head;
3 有了頭節點,我們就可以用同樣的方法來獲得更多的節點了。
先初始化乙個節點,
struct node *p;
p=(struct node *)malloc(sizeof(struct node));
p->next=null;
scanf("%d",p->data);
初始化完成,現在將他放入鍊錶的最後。這樣,新增的節點就成了尾節點。
tail->next=p;
tail=p;
將步驟3封裝到乙個函式裡,就有了鍊錶操作的第一種功能,「增」
這個是鏈結原作者
c語言 鍊錶 C語言鍊錶例項 玩轉鍊錶
下圖為最一簡單鍊錶的示意圖 第 0 個結點稱為頭結點,它存放有第乙個結點的首位址,它沒有資料,只是乙個指標變數。以下的每個結點都分為兩個域,乙個是資料域,存放各種實際的資料,如學號 num,姓名 name,性別 和成績 score 等。另乙個域為指標域,存放下一結點的首位址。鍊錶中的每乙個結點都是同...
C語言通過鍊錶了解指標
我們知道鍊錶的基本單元就是乙個結構體,如 typedef struct node node,pnode 結構體中包括本結點的值和指向下一塊結構體的指標 c語言中不能在結構體中定義自己,所以需要存放結構體指標 通過指標將結點乙個乙個連線起來,形成簡單的單鏈表。typedef 將定義結構體重命名為nod...
C語言靜態鍊錶和動態鍊錶
1.靜態鍊錶 結構體中的成員可以是各種型別的指標變數,當乙個結構體中有乙個或多個成員的基型別是本結構體型別時,則稱這種結構體為 引用自身的結構體 如 struct link a p是乙個可以指向 struct link 型別變數的指標成員。因此,a.p a 是合法的表示式,由此構成的儲存結構如圖1所...