鍊錶的定義:首先鍊錶是一種常見的基礎資料結構,是一種線性 表,但與陣列的整齊性和連續性不同,鍊錶是一種在物理儲存單元上非順序,非連續的儲存結構,而鍊錶中的資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。
鍊錶的組成部分:鍊錶由一系列結點(鍊錶中的每乙個元素即成為結點)組成,其中結點包括兩個部分:資料域與指標域。
1.由於鍊錶中的每個結點(一般不包括頭結點和尾結點):都包括資料域和指標域兩個部分,及即存數值又存指標,所以首先需要乙個結構體來表示每個結點;
typedef struct student
stu;
2.由於鍊錶的建立是一種從無到有的過程,並且每個鍊錶所需要記憶體空間都是不同且不可確定的,所以需要乙個函式為資料開闢新的記憶體空間,此時則需要了解兩種開闢記憶體空間的函式;
<1>malloc函式
void *malloc(unsigned int size)
向系統申請分配指定size個位元組的記憶體空間,返回值為void *型別(可以強制轉換為任何其他型別的指標)
<2>calloc函式
void *calloc(unsigned int n,unsigned int size)
向系統申請分配連續空間的size個位元組的n個記憶體空間,返回值為void *型別(可以強制轉換為任何其他型別的指標)
注意:這兩個函式的包含檔案由於編譯器版本的不同可能有兩種
#include#include
3.頭插法的主要思想:
將所輸入的資料均插入前乙個輸入資料的前邊;
缺點:正常傳統輸出時為逆序輸出;
解決方法:新增乙個依次指向,使其正序輸出;
b->number=n;
b->next=null;
if(head->next==null)
else
a=b
4.記憶體空間的釋放:free()
之前申請的記憶體空間用完之後,及時將他釋放
free(head);
5.頭插法的整體**及解釋
#include#include#include//開闢記憶體空間的malloc函式的標頭檔案
typedef struct student
stu;//定義乙個結構體,其中包括資料與指標
main()
//只在最開始進行一次
else
a=b;//通過指標指向將a插在b之前
}//由於每次均在前乙個值的前邊插入,故稱之為:頭插法
stu *z=head->next;//定義乙個新的指標指向頭指標的下乙個指標域
while(z!=null)//只要此指標不為空即進行迴圈
free(head);
}
鍊錶操作 頭插法尾插法
單鏈表的插入操作,包括頭插和尾插,兩種的時間複雜度都為o n 單鏈表插入操作 頭插 尾插 include include using namespace std 定義結點資料型別 typedef int elemtype 結點定義 typedef struct lnode lnode,linklis...
頭插法 尾插法建立鍊錶
鍊錶是線性表的一種,一般來說鍊錶就是一系列的儲存資料元素的單元通過指標串接起來形成的,常見的鍊錶是單鏈表和雙鏈表,乙個域用於資料元素的儲存,另乙個或兩個域是指向其他單元的指標。對於單鏈表來說,指標域是乙個,指向當前節點的後繼節點 雙鏈表來說,乙個指標域指向當前節點的後繼節點,另外乙個指標域指向當前節...
頭插法建立鍊錶
include include typedef struct lnode lnode,linklist lnode int tail insert linklist l,int n int tail insert linklist l,int n static lnode l int headins...