@第二章 線性表
順序表和煉表的比較:
1、基於空間的比較
1)儲存分配的方式:順序表的儲存空間是一次性分配的,鍊錶的儲存卡空間是多次分配的。
2)儲存密度(儲存密度=結點域值所佔的儲存量/結點結構所佔的儲存總量):
順序表的儲存密度=1,鍊錶的儲存密度<1(因為結點中有指標域)
2、基於時間的比較
1)訪問方式:
順序表可以隨機訪問,鍊錶只能順序訪問
2)插入/刪除時移動元素的個數:
順序表平均需要移動近一半元素;鍊錶不需要移動元素,只需要修改指標。
一、結構體定義
//順序表的結構體定義
#define maxsize 100
typedef struct
sqlist;
//或如下常用定義
int a[maxsize];
int n; //n表示順序表的長度
//單鏈表結點定義
typedef structure lnode
lnode; //定義單鏈表結點
//雙鏈表結點定義
typedef struct dlnode
dlnode; //定義雙鏈表的結點型別
lnode *a=(lnode *)malloc(sizeof(lnode));
//這裡的a命名了兩個東西:乙個是結點,另乙個是指向這個結點的指標;
二、順序表的初始化、查詢、插入及刪除操作
//初始化順序表
void initlist(sqlist &l) //l本身要改變所以用引用型
//在順序表中查詢乙個元素等於e的值
int findelem(sqlist l,int e)
//刪除操作
int deleteelem(sqlist &l,int p,int &e) //要改變的變數用引用型
三、單鏈表的建立、歸併、查詢、刪除操作。
單鏈表的的建立包括頭插法和尾插法兩種。
//尾插法建立鍊錶c
void createlistr(lnode *&c,int a,int n) //要改變的變數用引用型
r->next=null; //陣列a中的所以元素都已經轉入鍊錶c中,
//c的終端結點的指標域置為null
}//頭插法建立鍊錶c
void createlistf(lnode *&c,int a,int n)
}//a和b是兩個帶表頭結點的單鏈表,其元素均遞增有序,
//將a和b歸併成乙個元素非遞減的鍊錶c(採用尾插法)
void merge(lnode *a,lnode *b,lnode *c)
else
}r->next=null;
/* 將還有剩餘結點的鍊錶鏈結在c的尾部 */
if(p!=null) r->next=p;
if(q!=null) r->next=q;
}//採用頭插法歸併成遞減的單鏈表演算法
void merge(lnode *a,lnode *b,lnode *c)
else
}/* 必須將剩餘元素逐個插入c的頭部才能得到最終的遞減序列 */
while(p!=null)
while(q!=null)
}//查詢並刪除帶頭結點單鏈表中掉的乙個值為x的結點
int findanddelete(lnode *c,int x)
/* 查詢部分結束*/
if(p->next=null)
return 0;
else
}
四、雙鏈表建立、查詢、插入、刪除操作
//採用尾插法建立雙鏈表
void createdlistr(dlnode *&l,int a,int n)
r->next=null;
}//查詢結點演算法
dlnode* findnode(dlnode *c,int x)
return p; //若找到,則p中內容是結點位址迴圈因break結束,
//若未找到則p中內容是null
}//插入結點操作
s->next=p->next;
s->prior=p;
p->next=s;
s->next->prior=s;
//刪除結點操作
q=p->next;
p->next=q->next;
q->next->prior=p;
free(q);
第二章 線性表
定義 線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度。長度等於0時稱空表,乙個非空表通常記作 l a1,a2,an 線性表的性質 1.有限性 元素個數有限 2.相同性 元素型別相同 3.順序性 除首位元素外,相鄰元素都有前驅和後繼 2.1.2線...
第二章線性表
2 1線性表的邏輯結構 1 線性表是n 0個具有相同型別的資料元素的有限序列。空表是長度等於零的線性表。2 特性 有限性 相同性 順序型。2 2線性表的順序儲存結構及實現 1 c 中陣列的下標是從0開始的,而線性表中元素的序號是從1開始的。線性表中第i個元素儲存在陣列中下標為i 1的位置。2 順序表...
第二章 線性表
寫在前邊的話寫 好比寫詩,資料結構就好比唐詩三百首,熟讀並默寫這是基本功能,所以要閒的沒事可以在紙上多寫 線性表的定義和基本操作 線性表的實現 2.1順序儲存結構 2.2鏈式儲存結構 2.3線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...