線性表我們分為順序表和煉表,兩種表各有優劣勢。
順序表:所佔空間一開始就固定,滿了就放不下了,但存相同的資料,所佔記憶體比煉表好。
鍊錶:可以一直創立下去,是我們比較常用的,但所佔的多餘空間較多。
我們的鍊錶所使用的一些函式是大多數鍊錶都通用的,現在我們用乙個例項說明一下。
要求實現乙個合併函式,實現對有序單迴圈鍊錶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...