玩轉鍊錶和指標,才算是精通C語言。

2021-08-01 09:44:36 字數 930 閱讀 6589

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所...