具有相同(每個元素所佔空間一樣大)資料型別的n個資料元素的有限序列,n為表長,當n=0為空表
ai:i為位序
a1 :表頭,an表尾
直接前驅、直接後繼
初始化:分配記憶體空間
銷毀:釋放記憶體空間
插入:指定位置插入指定元素,注意!儲存空間是否滿,插入元素要跟前後相鄰
刪除:刪除指定並用e返回被刪除元素值
按值查詢
按位查詢
求長、輸出、判空
&:引數的引用
順序儲存:邏輯相鄰物理上也相鄰
靜態分配->大小容量不可變,需提前知道需要多少空間
#define maxsize 10
typedef structsqlist;
動態分配
#define initsize 10 //初始預設最大長度
typedef structseqlist;
動態申請記憶體空間:(elemtype *)malloc(sizeof(elemtype) *initsize);
malloc函式返回乙個指標,需要強制轉換成資料元素型別指標,存放在堆區
增加長度
void increasesize(seqlist &l,int len)
l.maxsize = l.maxsize + len;
free(p); //釋放原表
}
特點:
單鏈表定義
typedef struct lnodelnode,*linklist; //單鏈表節點型別別名為lnode,linklist指標
帶頭結點與不帶頭結點
不帶頭結點,需要對第乙個結點和後續處理、空表和非空表使用額外**
後插:在指定元素之後插入乙個新結點,指定元素之後都為可知結點
前插:在指定元素之後插入乙個新結點,指定元素之後都為不可知結點
可以引入頭指標
交換指定元素位置
s->next = p->next; //新結點放入指定元素之後
p->next = s;
s->data = p->data; //交換指定元素的值
p->data = e;
建立
尾插法:物理與邏輯順序相反
s->data = x;
r->next = s;
r = s; //r永遠指向最後乙個結點
頭插法:物理與邏輯順序相同應用:鍊錶的逆置
s->data = x;
s->next = l->next; //l為頭指標
l->next = s;
特點:
雙鏈表定義
typedef struct dnodednode,*dlinklist
插入
s->next = p->next;
p->next->prior = s;
s->prior = p;
p->next= s;
迴圈單鏈表
定義
l->next = l; //初始化時指向頭結點
迴圈雙鏈表
定義
l->prior = l; //初始化時都指向頭結點
l->next = l;
靜態鍊錶
定義:分配一整片連續的記憶體空間,各個結點集中安置,利用游標記錄下個結點的下標
設每個元素為4b,游標4b,起始位址為addr,則e1的存放位址為addr+8*2
#define maxsize 10
typedef structslinklist[maxsize] //自定義型別的陣列
struct node;
typedef struct node slinklist[maxsize];//定義乙個長度為maxsize的node型陣列
特點:陣列實現
優點:增刪改查不需要移動大量元素
缺點:不能隨機訪問,容量固定不可變
適用場景:
邏輯結構:都是線性結構
基本操作:
建立:
銷毀:
增刪:
查:
線性表知識點小結
線性表可以看作一種有序元素的集合,目的在於表示列表中相鄰兩元素之間的關係。注意以下幾點 有序表可以看作是空集合,或者可以寫成 a1,a2,a3,存在唯一的第乙個元素a1和唯一的最後乙個元素an 除了第乙個元素a1以外,每乙個元素都有唯一的先行者 除了最後乙個元素an外,每乙個元素都有唯一的後繼者 典...
線性表部分知識點小結
前不久結束 資料結構與演算法 的網路課堂學習,我根據課堂學習的知識點與課後查詢資料拓展知識點寫了一篇線性表的部分知識小結,如下 線性表的定義 線性表 linear list 是資料結構的一種,乙個線性表是n個具有相同特性的資料元素的有限序列。資料元素是乙個抽象的符號,其具體含義在不同的情況下一般不同...
線性表知識點總結一(第三天)
1.線性表 list 定義 由零個 稱為空表 或多個資料元素組成的 有限序列。資料型別 是指由一組性質相同的值得集合及定義在此集合上的一些操作的總稱 資料型別分為原子型別 不可再分解的基本型別 和結構型別 由若干個型別組合而成 抽象 抽取出事物的普遍性本質。資料 線性表的資料物件集合為,每個元素型別...