通常情況下,鏈結可分為單鏈表、雙向鍊錶和迴圈鍊錶三種常用型別。
一、單鏈表基本操作的實現
使用鏈式儲存結構來實現的線性表稱為鍊錶。首元結點、頭結點、頭指標、空指標。
1.單鏈表的型別定義
typedef struct lnode//2.初始化操作initlinklist(&l)結點型別
lnode, * linklist;
status initlinklist(linklist &l)3.求表長操作listlength(&l)
int4.取元素操作getelem(linklist l,int i,lelemtype &e)listlength(linklist l)
return j;//
返回計數器
}
status getelem(linklist l,int i,lelemtype &e)5.按值查詢locateelem(l,e)if(j==i)//
若找到
else
return error;//
若沒找到,返回error
}
linklist locateelem(linklist l,lelemtype e)6.插入操作listinsert(&l,i,e)
status listinsert(linklist &l,int7.刪除操作listdelete(&l,i,&e)i,lelemtype e)
if(j==i-1)//
在j後插入新結點
else
return
error;
}
status listdelete(linklist &l,int i,lelemtype &e)8.頭插法建立單鏈表操作createlist(&l,n)if(j==i-1&&p->next)//
判斷i結點是否存在
else
return
error;
}
void createlist(linklist &l,int9.尾插法建立單鏈表操作createlist(&l,n)n)}
void createlist(linklist &l,int二、雙向鍊錶基本操作的實現1.雙向鍊錶的型別定義n) r->next=null; //
最後乙個結點後繼指標為空
}
typedef struct2.插入操作演算法dlnode
dlnode,* dlinklist;
status listinsert(dlinklist &l,int3.刪除操作演算法i,lelemtype e)
if(j==i-1
)
else
return
false;
}
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個學生成績的順序表,對錶進行插入 刪除 查詢等操作。分別輸出結果...