線性表的相關使用

2021-10-10 18:57:13 字數 1540 閱讀 9766

線性表我們分為順序表和煉表,兩種表各有優劣勢。

順序表:所佔空間一開始就固定,滿了就放不下了,但存相同的資料,所佔記憶體比煉表好。

鍊錶:可以一直創立下去,是我們比較常用的,但所佔的多餘空間較多。

我們的鍊錶所使用的一些函式是大多數鍊錶都通用的,現在我們用乙個例項說明一下。

要求實現乙個合併函式,實現對有序單迴圈鍊錶tail1和tail2的合併,要求合併時實現去重操作,即合併後的鍊錶中沒有重複的元素,並且合併後的鍊錶為遞增有序鍊錶。

#include

#include

typedef

int datatype;

struct node //定義線性表型別

;typedef

struct node node;

//大量使用typedef,等封裝比較容易。

typedef

struct node *pnode;

typedef

struct node *linklist;

pnode createemptylinkedlist()

//建立鍊錶,返回鏈頭。

intisnull_link

(linklist llist)

//判空。

pnode buildcircularlinkedlist

(int n, pnode tail)

//建起鍊錶,把煉錶鏈下去。

current->next = tail->next;

tail->next = current;

return tail;

}pnode mergendeduplicatelist

(pnode tail1, pnode tail2)

//把我們輸入的兩個有序鍊錶合成乙個有序鍊錶。

while

(a!=b)

a=a->next;

} a=d;

if(k==0)

} q->next=d;

tail1->next=q;

return tail1;

}void

printcircularlinkedlist

(pnode tail)

//輸出鍊錶的內容。

while

(current != last->next);}

void

destorylist_link

(linklist tail)

//用完了鍊錶釋放所佔空間。

free

(pre)

;free

(tail);}

intmain()

我的測試用例為

5

1 2 2 3 6

62 6 6 9 15 19

結果為

線性表的相關操作

順序表的建立 status initlist sqlist l 順序表的銷毀 status destroylist sqlist l 順序表的清空 status clearlist sqlist l 判斷順序表是否為空 status listempty sqlist l 順序表的元素個數 int l...

線性表及其相關操作

一 定義 線性表是最基本 最簡單 也是最常用的一種資料結構。線性表 linear list 是資料結構的一種,乙個線性表是n個具有相同特性的資料元素的有限序列。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的 注意,這句話只適用大部分線性表,而...

線性表的相關演算法總結

鍊錶的操作 線性表的應用 define maxsize 100 typedef int elemtype typedef struct sqlist void initlist sq sqlist l void destroylist sqlist l void clearlist sqlist l...