資料結構(二)線性表 鍊錶

2022-05-16 20:18:31 字數 2785 閱讀 9225

通常情況下,鏈結可分為單鏈表、雙向鍊錶和迴圈鍊錶三種常用型別。

一、單鏈表基本操作的實現

使用鏈式儲存結構來實現的線性表稱為鍊錶。首元結點、頭結點、頭指標、空指標。

1.單鏈表的型別定義

typedef struct lnode//

結點型別

lnode, * linklist;

2.初始化操作initlinklist(&l)

status initlinklist(linklist &l)

3.求表長操作listlength(&l)

int

listlength(linklist l)

return j;//

返回計數器

}

4.取元素操作getelem(linklist l,int i,lelemtype &e)

status getelem(linklist l,int i,lelemtype &e)

if(j==i)//

若找到

else

return error;//

若沒找到,返回error

}

5.按值查詢locateelem(l,e)

linklist locateelem(linklist l,lelemtype e)

6.插入操作listinsert(&l,i,e)

status listinsert(linklist &l,int

i,lelemtype e)

if(j==i-1)//

在j後插入新結點

else

return

error;

}

7.刪除操作listdelete(&l,i,&e)

status listdelete(linklist &l,int i,lelemtype &e)

if(j==i-1&&p->next)//

判斷i結點是否存在

else

return

error;

}

8.頭插法建立單鏈表操作createlist(&l,n)

void createlist(linklist &l,int

n)}

9.尾插法建立單鏈表操作createlist(&l,n)

void createlist(linklist &l,int

n) r->next=null; //

最後乙個結點後繼指標為空

}

二、雙向鍊錶基本操作的實現1.雙向鍊錶的型別定義

typedef struct

dlnode

dlnode,* dlinklist;

2.插入操作演算法

status listinsert(dlinklist &l,int

i,lelemtype e)

if(j==i-1

)

else

return

false;

}

3.刪除操作演算法

status listdelete(dlinklist &l,int i,lelemtype &e)

if(j==i)

else

return

flase;

}

三、迴圈鍊錶的認識和使用首尾相接的鍊錶就是迴圈鍊錶,單鏈表和雙鏈表均可以構成迴圈鍊錶。 

1.迴圈鍊錶 表尾結點的判定

p->next=l;

2.迴圈單鏈表合併演算法

void unioncirlist(linklist &r1,linklist &r2)

四、鍊錶例項——約瑟夫環問題1.問題描述:

設編號為1、2、3...、n的n個人圍坐一圈,約定從編號為k(1=2.演算法描述:

1 #include 2 #include 3 typedef struct

personnode

4personnode,*personlist;8//

由n個人組成的約瑟夫環問題,從第k個人開始,數到m就出列

9void josephus(int n,int m,int

k)10

20for(i=2;i<=n;i++)

2128 p=r->next;//

p指向第1個人員結點

29for(i=1;i)30

34for(i=1;i)

3541 printf("

%d",p->num);//

輸出人員編號

42 r->next=p->next;

43free(p);//

刪除已出列的結點

44 p=r->next;//

下一計數為1的結點 45}

46 printf("

%d\n

",r->num);//

輸出最後出列人員編號

47free(r);//

刪除最後乙個結點 48}

4950

intmain()

51

輸出結果:

mysql 線性表 資料結構(二)線性表 鍊錶

通常情況下,鏈結可分為單鏈表 雙向鍊錶和迴圈鍊錶三種常用型別。一 單鏈表基本操作的實現 使用鏈式儲存結構來實現的線性表稱為鍊錶。首元結點 頭結點 頭指標 空指標。1.單鏈表的型別定義 typedef struct lnode 結點型別 lelemtype data 資料域 struct lnode ...

資料結構(二) 線性表

線性表是最簡單最常用的資料結構,是一種典型的線性儲存結構。定義 線性表是由n n 0 個資料元素 結點 a1 a 2 an 組成的有限序列。n為表的長度。當n 0,為 空表 n 0時,為 a1,a 2,an 邏輯特徵 非空的線性表只有乙個頭結點,也只有乙個終結點,頭結點只有乙個直接後繼結點,而沒有直...

資料結構實驗二 線性表

一 實驗目的 鞏固線性表的資料結構,學會線性表的應用。1.回顧線性表的邏輯結構,線性表的物理儲存結構和常見操作。2.學習運用線性表的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.建立乙個n個學生成績的順序表,對錶進行插入 刪除 查詢等操作。分別輸出結果...