線性表的結構體定義和基本操作

2021-10-08 10:56:53 字數 2657 閱讀 5903

#define maxsize 100 

//定義整型變數maxsize為100

1.順序表的結構體定義

typedef

struct

sqlist;

2.單鏈表的結點定義

typedef

struct lnodelnode;

2.雙鏈表結點定義

typedef

struct dlnodedlnode;

ps:結點是記憶體中一片由使用者分配的儲存空間,只有乙個位址來表示它的存在,沒有顯式的名稱,因此我們會在分配鍊錶結點空間的時候,同時定義乙個指標,來儲存這片空間的位址(這個過程通俗地講叫指標指向結點),並且常用這個指標的名稱來作為結點的名稱。

例如下邊這句**:

lnode *a=

(lnode *

)malloc

(sizoof

(lnode)

);

使用者分配了一片lnode型空間,也就是構造了乙個lnode型的結點,這時候定義乙個名字為a的指標來指向這個結點,同時我們把a也當作這個結點的名字。注意,這裡a命名了兩個東西:乙個是結點,另乙個是指向這個結點的指標。

(1)初始化順序表的演算法

只需要將length設定為0,**如下:

void

initlist

(sqlist &l)

(2)求指定位置元素的演算法

用e返回l中p位置上的元素,**如下:

int

getelem

(sqlist l,

int p,

int&e)

(3)按元素值查詢演算法

int

finde

(sqlist l,

int e)

}return-1

;}

(4)插入資料元素的演算法

順序表l的第p個位置上插入新的元素e,如果p的輸入不正確則返回0,代表插入失敗;如果p的輸入正確,則將順序表第p個元素以及以後元素右乙個位置,騰出乙個空位置插入新元素,順序表的長度增加1,插入操作成功,返回1

int

inserte

(sqlist &l,

int p,

int e)

(5)刪除指定位置的元素

int

deleteelem

(sqlist &l,

int p,

int&e)

(1)建立鍊錶

①尾插法建立

//假設有n個元素儲存在陣列a中,用尾插法建立鍊錶c 

void

createlistr

(lnode *

&c,int a,

int n)

r->next=

null

;}

②頭插法建立鍊錶

//假設有n個元素儲存在陣列a中,用頭插法建立鍊錶c 

void

createlistf

(lnode *

&c,int a,

int n)

}

(2)刪除結點

要將單鏈表的第i個結點刪除,必須先在單鏈表中找到第i-1個結點,再刪除其後繼結點。如果要刪除結點p則完整的刪除操作應該是:

q=p-

>next;

p->next=p-

>next-

>next;

free

(q);

1.採用尾插法建立雙鏈表

void

createdlistr

(dlnode *

&l,int a,

int n)

r->next=

null

;}

2.查詢結點的演算法

在雙鏈表中查詢第乙個值為x的結點,從第乙個結點開始,邊掃瞄邊比較,若找到這樣的結點,則返回結點指標,否則返回null,演算法**如下:

dlnode*

findnode

(dlnode *c,

int x)

return p;

}

3.插入結點的演算法

假設在雙鏈表中p所指的結點之後插入乙個結點s,其操作語句如下;

s-

>next=p-

>next;

s->prior=p;

p->next=s;

s->next-

>prior=s;

//假如p所指向最後乙個結點,則本行可去掉

4.刪除結點的演算法

q=p-

>next;

p->next=q-

>next;

q->next-

>prior=p;

free

(q);

2 2線性表的結構體定義和基本操作

define maxsize 100 這裡定義乙個整型常量maxsize,值為1001 順序表的結構體定義 typedef structsqlist 順序表型別的定義乙個順序表包括乙個儲存表中元素的陣列data和乙個指示元素個數的變數length。如下圖2 9所示 ps 在考試中用得最多的順序表的定...

線性表的基本定義和操作

目錄 線性表的順序表示 線性表是具有相同資料型別的n n geq 0 個資料元素的有限序列 其中n為表長,當n 0 n 0n 0時,該線性表是乙個空表。若用l ll命名線性表,則其一般表示如下 l a1,a 2,an l a 1,a 2 cdot cdot cdot a n l a1 a2 an 其...

線性表的定義和基本操作

目錄 一 定義 二 特點 三 線性表的主要操作 線性表具有 相同的資料型別 n n 0 個資料元素的 有限序列,n 為表長,當 n 0表示空表 一般表示為 l a 1,a,2 an 第乙個元素a1是第乙個元素表頭元素,an是最後乙個元素表尾元素,除第乙個元素外其他元素都有乙個前驅,除最後乙個元素外,...