當前位置:
首頁 > 知識 > C語言鏈表的來源分析

C語言鏈表的來源分析

C語言中的鏈表是重點,也是難點,而且意義非凡。對鏈表的的抽象和恐懼是源於對它的來龍去脈的不明白。所以很有必要對它的發展淵源做透徹分析。

鏈表的單位是節點,而節點源於複合數據類型:結構體;

節點和結構體的區別就是看是否有指針域,目的就是想找到下一個節點;

結構體形如:

struct Ghost

{

char name[30];

int age;

int height;

char addr[30];

};

節點形如:

struct Ghost

{

char name[30];

int age;

int height;

char addr[30];

struct Ghost *next;

};

想要一起學習C++的可以加裙四五三二四三二八零,裙內有各種資料滿足大家,歡迎加裙

現在來看一下創建1個節點的情況:

效果如下:

那麼申請多個節點呢?如3個。

核心代碼如下:

//堆中申請變數

struct Ghost *g1 = (struct Ghost*)malloc(sizeof(struct Ghost));

struct Ghost *g2 = (struct Ghost*)malloc(sizeof(struct Ghost));

struct Ghost *g3 = (struct Ghost*)malloc(sizeof(struct Ghost));

//賦值

strcpy(g1->name, "聶小倩");

g1->age = 22;

g1->height = 165;

strcpy(g1->addr, "蘭若寺");

g1->next = NULL;

//賦值

strcpy(g2->name, "付清風");

g2->age = 23;

g2->height = 166;

strcpy(g2->addr, "十里亭");

g2->next = NULL;

//賦值

strcpy(g3->name, "東方不敗");

g3->age = 24;

g3->height = 167;

strcpy(g3->addr, "黑木崖");

g3->next = NULL;

//遍歷

printf("姓名:%s ", g1->name);

printf("年齡:%d ", g1->age);

printf("身高:%d ", g1->height);

printf("地址:%s ", g1->addr);

//遍歷

printf("姓名:%s ", g2->name);

printf("年齡:%d ", g2->age);

printf("身高:%d ", g2->height);

printf("地址:%s ", g2->addr);

//遍歷

printf("姓名:%s ", g3->name);

printf("年齡:%d ", g3->age);

printf("身高:%d ", g3->height);

printf("地址:%s ", g3->addr);

效果圖:

想要一起學習C++的可以加裙四五三二四三二八零,裙內有各種資料滿足大家,歡迎加裙

成功是成功了,但這很原始,可以改進的:藉助成員指針的力量自動去找下一個,讓鏈起來!

對賦值做改動:

那麼遍歷就可以改進了:

效果:

這樣,我只要知道第1個節點的位置,後面的就可以一股腦的扯出來。這就是鏈表。

特點:鏈表是一連串節點鏈起來的,是線性特點。只要拿第1個節點,就可以把一堆的節點都找到。就像貪吃蛇一樣,蛇頭走到哪裡,蛇身和蛇尾就跟到哪裡。

和數組類似,數組的第1個元素的首地址就是數組的地址;鏈表的第1個節點的地址就是鏈表的首地址;

接下來就可以封裝出操作鏈表的函數了,如:遍歷鏈表,添加節點,刪除節點,統計節點。

想要一起學習C++的可以加裙四五三二四三二八零,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

每天學點C語言-如何使用scanf讀取任何輸入
C語言 圖形界面——實現貪吃蛇遊戲

TAG:C加加 |

您可能感興趣

數據結構-線性表(順序表與鏈表的基本知識 以及ArrayList 源碼分析)
List順序表,鏈表隊列,棧,字典
《演算法圖解》之數組和鏈表的比較
鏈表,哈希,挖礦等-區塊鏈技術學習筆記
看動畫輕鬆理解「鏈表」實現「LRU 緩存淘汰演算法」
判斷一個單鏈表是否有環及環入口
如何不再被「單鏈表」面試題虐得男默女淚?
「唯快不破」成了互聯網焦慮?區塊鏈表示:無壓力
51Nod-1589 移數博弈(鏈表)
很多商業銀行和央行都對區塊鏈表示擔心,原因既有技術也有利益