C C 利用鍊錶實現順序表的合併

2021-10-04 20:04:27 字數 1847 閱讀 6725

//預編譯區::

#include "stdafx.h"

#include#include#define ok 1

#define error 0

#define gt 1

#define eq 0

#define lt -1

using namespace std;

//資料結構宣告區:

typedef struct lnodelinklist;

//函式宣告區:

void initlink(linklist &l);

void insertlink(linklist *tail, linklist *s);

int lengthlink(linklist &l);

void creatlink(linklist &l);

void displink(linklist &l, char c);

void sortlink(linklist &l);

void merge(linklist a, linklist b, linklist &temp);

//主函式區:

int main(void)

//初始化鍊錶集合:

void initlink(linklist &l)

//插入元素:直接尾插法插入集合,tail是上一次記錄的為指標位置

void insertlink(linklist *tail, linklist *s)

//判斷集合元素個數

int lengthlink(linklist &l)

return len;

}//建立乙個集合元素

void creatlink(linklist &l)

return;

}//輸出集合元素

void displink(linklist &l, char c)

} printf("\n");

return;

}//將集合排序

void sortlink(linklist &l)

return;

}//順序線性表合併

void merge(linklist a, linklist b, linklist &temp)

else if (lena != 0 && lenb == 0)

else if (lena == 0 && lenb != 0)

if (lena>lenb)

else

while (pa != null&&pb != null)

while (pa->next != null && pa->next->data < pb->data)

pa = pa->next; //移動之後又出現了可能相同的情況,要重新再比較一次

if (pa->next != null&&pa->next->data == pb->data)

pb = pb->next; //先移動pb,用temp代替原始pb進行操作

特殊鍊錶及順序表的合併

與單鏈表不同的地方 最後乙個結點的指標域指向l 某些情況下,若在迴圈鍊錶中設立尾指標而不設頭指標 見圖2.18 a 可使一些操作簡化。例如,將兩個線性表合併成乙個表時,僅需將第乙個表的尾指標指向第二個表的第38 第2章線性表乙個結點,第二個表的尾指標指向第乙個表的頭結點,然後釋放第二個表的頭結點。雙...

線性表的合併 有序表(利用順序表)的合併

例1 求解一般集合的並集問題 問題描述 已知兩個集合 a 和 b 現要求乙個新的集合 a a u b 例如,設 a 7,5,3,11 b 2,6,3 合併後,a 7,5,3,11,2,6 問題分析 可以利用兩個線性表 la 和 lb 分別表示集合 a 和 b 即線性表中的資料元素為集合中的成員 這樣...

順序鍊錶的實現

寫了一下順序鍊錶,為了防止自己忘記,於是乎寫在部落格裡方便檢視。程式中的容錯處理做的不好,是我懶了,就簡單處理了一下 下面才給出這兒一套api函式 標頭檔案 ifndef seqlist h define seqlist h include include include typedef void ...