實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。
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 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...