資料結構 二 鍊錶

2021-09-21 13:50:44 字數 2030 閱讀 4957

鍊錶,,,就是鍊錶嘛,下面是鍊錶的基本操作**。

#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 插入...

資料結構試驗二 鍊錶

第二次資料結構試驗 老師給出的程式比較齊全,直接進行稍微修改就可以實現相乘了,僅僅是個雙迴圈而已,其他地方基本沒有難點了,主要是鍊錶的操作,自己做的比較粗糙,不過暫時功能考慮的還算可以.今天早上一點多完善的,但是想提交的時候,電腦沒電自動關機了.然後到現在提交了.根據給出的一元多項式的加法寫出一元多...