C C 資料結構之鍊錶(一步一步拆解單鏈表)

2021-08-18 08:41:00 字數 1283 閱讀 4273

困擾了很久的資料結構重新拾起來,參考部落格大牛的文章,思考出一點自己的理解,希望給在學習資料結構這條路上的兄弟姐妹有所幫助,也為自己家能夠理清思路。廢話不多說,直接上**。

所需標頭檔案如下並且遮蔽安全警告:

#define _crt_secure_no_warnings
#include#include#include
首先宣告鍊錶的資料型別,習慣方法如下:

typedef struct listnode node, *pnode;
這裡有兩點需要注意一下:1、如果是cpp檔案,結構體中的struct listnode * next可寫為listnode* next;2、這裡使用了巨集typedef關鍵字,則node和pnode為新宣告的資料型別名稱,類似於已有的int,char,double等。node是結構體型別,pnode是結構體指標型別,如需了解結構體移步另外一篇文章。

接下來看鍊錶建立函式定義

pnode createlist(void) 

//指向鍊錶尾部的指標,個人認為ptail是在棧空間上的,是乙個輔助指標,用於連線新的節點

pnode ptail = phead; // 鍊錶的末尾節點,初始指向頭節點

ptail->next = null; // 最後乙個節點指標置為空

printf("請輸入節點個數:");

scanf("%d", &len); // 輸入節點個數

for (int i = 0; i < len; i++)

printf("請輸入第 %d 個節點的資料:", i + 1);

scanf_s("%d", &val); // 輸入鍊錶節點的資料

pnew->element = val; // 把資料賦值給節點資料域

ptail->next = pnew; // 末尾節點指標指向下乙個新節點,連線新的節點

pnew->next = null; // 新節點指標指向為空

ptail = pnew; // 將新節點複製給末尾節點 ,將ptail指向尾節點

} printf("建立鍊錶成功\n"

);return phead; // 返回頭節點

}

最後看主函式

int main()

原部落格鏈結找不到了,作者如看到可私我。

一步一步學鍊錶

首先是基本框架 1.錄入鍊錶 2.插入乙個元素 3.刪除乙個元素 4.遍歷鍊錶,輸出所有 5.鍊錶排序 6.退出 看了一下資料,了解了不少,寫了基本框架,今天先把錄入和輸出給實現了吧!先把 貼出來 首先是主函式 include include define null 0 typedef struct...

一步一步學習資料結構(2) 鍊錶及其操作

1 單鏈表的節點插入操作 假設p指向乙個節點,要將 s所指節點插入 p所指節點之後的操作如下 s next p next p next s 2 單鏈表的節點刪除操作 節點a,節點b,假設p 為指向a 的指標,只需要將 p的指標域 next 指向原來p 注意釋放所刪除節點的記憶體空間 q p next...

一步一步寫演算法(之通用資料結構)

class calculate calculate int a,int b m a n b calculate int add int sub int mul int div 那麼我們可不可以仿造這個思路,在常用的資料結構裡面新增一些函式指標呢?至於為什麼要這些函式指標,主要是因為我們設計的資料結構...