鍊錶,,,就是鍊錶嘛,下面是鍊錶的基本操作**。
#include
#include
#include
#include
#pragma warning(disable:4996)
typedef
struct mylist
li;li *
createlist
(int n)
;//建立含有n個資料的鍊錶,返回頭結點
void
insert
(int x,li *head)
;//將資料為x的節點插入到頭結點為head的有序鍊錶中,時間複雜度o(n)
li *
createsortedlist
(int n)
;//建立含有n個資料的有序鍊錶,返回頭結點
void
delrepeat
(li *head)
;//刪除以head為頭結點的無序鍊錶中的重複元素,時間複雜度o(n^2)
void
reverselist
(li *head)
;//逆置以head為頭結點的無序鍊錶
void
mergelist
(li *a, li *b)
;//求兩個有序鍊錶a,b的並集,結果存放在鍊錶a中,並將b置空
void
destroylist
(li *head)
;//銷毀頭結點為head的鍊錶
void
showlist
(li *head)
;//顯示頭結點為head的鍊錶
intmain
(void
)li *
createlist
(int n)
//建立含有n個資料的鍊錶,返回頭結點
rear->next=
null
;return head;
}void
insert
(int x,li *head)
//將資料為x的節點插入到頭結點為head的有序鍊錶中
//在p1與p之間插入
q->next=p;
p1->next=q;
}li *
createsortedlist
(int n)
//建立含有n個資料的有序鍊錶,返回頭結點
return head;
}void
delrepeat
(li *head)
//刪除以head為頭結點的無序鍊錶中的重複元素
if(q == p)
//表示沒有重複元素
else
//有重複元素,刪除p}}
void
reverselist
(li *head)
//逆置以head為頭結點的無序鍊錶
}void
mergelist
(li *a, li *b)
//求兩個有序鍊錶a,b的並集,結果存放在鍊錶a中,並將b置空
else
if(p2->data < p1->data)
else
//p1->data==p2->data}if
(p1)
//連線剩餘元素
p3->next=p1;
else
p3->next=p2;
}void
destroylist
(li *head)
//銷毀頭結點為head的鍊錶
}void
showlist
(li *head)
//顯示頭結點為head的鍊錶
while
(p)printf
("\n");
if(i%
10!=0)
printf
("\n");
}
對於無用的空間,要及時釋放,源自求兩個有序鍊錶的並集;
鍊錶的建立實際上就是不斷地插入結點;
資料結構 鍊錶 二
上篇部落格詳細介紹了鍊錶的基礎功能增刪改查,但是鍊錶的主要難度是在鍊錶的逆序上,下面主要介紹鍊錶逆序。1 鍊錶逆序 一 假設當前有5個結點,head a1 a2 a3 a4 a5,他們的頭指標是head。我們的思路便是將a1作為當前元素一直往後遍歷,並且將a1後面的資料依次挪到head之後。在第一次...
資料結構(二)鍊錶
本文目錄 1 什麼是鍊錶 2 鍊錶抽象資料型別 3 單向鍊錶 3.1 插入操作 3.1.1 在煉表頭插入 3.1.2 在鍊錶尾插入 3.1.3 在鍊錶中間任意位置插入 3.2 刪除查詢 3.2.1 在煉表頭刪除 3.2.2 在鍊錶尾刪除 3.2.3 在鍊錶中間任意位置刪除 4 雙向鍊錶 4.1 插入...
資料結構試驗二 鍊錶
第二次資料結構試驗 老師給出的程式比較齊全,直接進行稍微修改就可以實現相乘了,僅僅是個雙迴圈而已,其他地方基本沒有難點了,主要是鍊錶的操作,自己做的比較粗糙,不過暫時功能考慮的還算可以.今天早上一點多完善的,但是想提交的時候,電腦沒電自動關機了.然後到現在提交了.根據給出的一元多項式的加法寫出一元多...