第二章 線性表

2021-09-11 14:07:00 字數 2352 閱讀 3836

@第二章 線性表

順序表和煉表的比較:

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線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...