一、順序結構
安裝軟件命令: sudo apt-get install ?(軟件名)
安裝格式化對齊:sudo apt-get install clang-format
內存泄漏檢測工具: sudo apt-get install valgrind
?編譯后,使用命令 ? ? ? ? valgrind ./a.out ? ? ? ?即可看內存是否泄露
?1、順序表的基本操作
????????表頭結構是可選項,但最好在使用中加上;
2、創建順序
【.h】中
【.c】 中
?
【主函數中】?
?3、判斷數據列表是否滿了
?【.c】中
?
?
?4、尾部插入
【主函數中】?
5、遍歷成員?
?
?
?6、計算裝了幾個元素
?
7、判斷是不是空數組?
?
8、 查找元素
【.c】中
?【主函數】中
?9、指定位置插入元素;
【.c】中
【主函數中】
?
?10、刪除一個元素;
?11、清空列表,結構還在
12、?修改列表中文件;
13、?全部銷毀
二、線性表順序存儲的優點,缺點?
1、優點
(1)無需為表中的邏輯關系增加額外的存儲空間
(2)可以快速隨機訪問元素O(1)/
2、缺點
(1)插入,刪除元素需要移動元素o(n)
(2)無法動態存儲。
?
三、鏈表(線性表的鏈式存儲)
1、目的:
????????解決順序存儲的缺點,插入和刪除,動態存儲問題;
2、 特點:
? ? ? ?(1) 線性表鏈式存儲結構的特點是一組任意的存儲單位存儲線性表的數據元素,存儲單元可以是連續的,也可以不連續;
? ? ? ?(2)可以被存儲在任意內存未被占用的位置上,所以前面的順序表只需要存儲數據元素信息就可以了。在鏈式結構中還需要一個元素存儲下一個元素的地址
? ? ? ? (3)為了表示每個數據元素,a[i]與其直接后繼數據元素a[i+1]之間的邏輯關系, ? ? ? ? ? ? ? ? ? ? ? ?????????????對a[i]來說,除了存儲其本身的信息外,還需要存一個指示器直接后續的信息。
? ? ? ? (4)我們把存儲元素信息的域叫數據域,把存儲直接后繼位置的域叫指針域。這兩部分信息組成數據元素ai的存儲映像,叫結點(Node);
3、單向鏈表?
?
?
- next指針指向整個結點開始位置
- 自定義類型不支持嵌套定義,因為不知道分配多大的內存空間;即在typedef srtuct node中,struct node next;不可取? ? ? ? ? ? ? ? ? ? 但*next可取
- 內存中開辟空間,用指針去接表頭結構
?3.1.1創建鏈表
【.h】中
?
?
?【.c】中
】
?【主函數中】
?3.1.2判斷是否為空鏈表
3.1.3 頭部插入
(1)鏈表為空(直接將head指向newnode)
?(2) 鏈表非空
?
【主函數】?
3.1.4獲取有效元素的個數
?3.1.5 遍歷表中元素
- 使tmp->next來進行遍歷,借助循環?
?
?
3.1.6 查找成員
3.1.7刪除成員
?
- 通過比較tmp下一個的內容來控制,使tmp停于待刪結點的前一個結點?
?
?3.1.8尾部插入
【主函數】?
?3.1.9指定位置插入
?