資料結構學習日記 兩個有序鍊錶序列的合併

2021-10-06 19:05:13 字數 940 閱讀 7493

實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。

l1和l2是給定的帶頭結點的單鏈表,其結點儲存的資料是遞增有序的;函式merge要將l1和l2合併為乙個非遞減的整數序列。應直接使用原序列中的結點,返回合併後的帶頭結點的煉表頭指標。

分析與實現

結構體定義

typedef struct lnode *list;
鍊錶構建函式
list creat(list l)   

free(p1); /*釋放最後p1開闢的未使用的空間*/

return l; /*返回頭結點*/

}

合併函式
list merge(list l1, list l2)

else /*同上*/

}if (l1->next)

if (l2->next)

return l3; /*返回新煉表頭結點*/

}

整體**
#include #include typedef struct lnode *list;

int main()

return 0;

}list creat(list l)

free(p1); /*釋放最後p1開闢的未使用的空間*/

return l; /*返回頭結點*/

}list merge(list l1, list l2)

else /*同上*/

}if (l1->next)

if (l2->next)

return l3; /*返回新煉表頭結點*/

}

執行結果
3

1 3 5

52 4 6 8 10

1 2 3 4 5 6 8 10

資料結構 合併兩個有序鍊錶,合併後依然有序

解題思路 假設有兩個有序單鏈表list1 list2 首先建立新的空鍊錶,用於存放結果 如果兩個有序單鏈表均為空,結果鍊錶為空 如果有乙個有序單鏈表為空,則結果鍊錶為另乙個鍊錶 如果兩個有序單鏈表均不為空,則根據以下方法進行合併 合併結束的條件 兩個鍊錶有乙個為空 合併兩個有序鍊錶,合併後依然有序 ...

資料結構學習 鍊錶

將從下面4部分進行介紹 首先介紹鍊錶是什麼,然後介紹為什麼定義鍊錶,接著是鍊錶的分類,最後簡單介紹一下鍊錶結點的插入與刪除方法。首先,在介紹鍊錶之前,我們先介紹一下什麼是順序儲存結構。我們知道資料在計算機中的儲存就像貨物在倉庫中的儲存一樣,不但占用一定的空間,還要有乙個標示儲存位置的位址。計算機通過...

資料結構學習 鍊錶

由於不必須按順序儲存,鍊錶在插入的時候可以達到o 1 的複雜度,比另一種線性表順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要o n 的時間,而線性表和順序表相應的時間複雜度分別是o logn 和o 1 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...