17 12 31 鍊錶合併

2022-02-28 23:45:57 字數 2161 閱讀 4484

鍊錶合併

描述定義一種單向鍊錶,鍊錶結點linknode包含乙個整數和乙個指向下乙個節點的指標。編寫下面四個子函式: 

1、建立鍊錶: 從標準輸入讀取資料,並建立鍊錶,返回建立的煉表頭 

linknode *createlinklist(); 

2、合併鍊錶:引數是兩個鍊錶的頭指標,返回合併後鍊錶的頭指標。合併後的鍊錶仍然有序。 

linknode *mergelinklist(linknode *a, linknode *b); 

3、遍歷並顯示合併後的鍊錶的元素。 

void displaylinklist(linknode *linklist); 

4. 釋放鍊錶空間:如果createlinklist中使用了new分配空間,這裡迴圈使用delete釋放 

void destroylinklist(linknode *linklist); 

注意: 

1. 假設使用者輸入資料時,是按照資料從小到大輸入的,即鍊錶是乙個有序鍊錶,不需要排序操作; 

2. 沒有按要求編寫函式的,即使通過也會被扣分。 

3. 你的程式應該使用盡可能少的記憶體空間。(在mergelinklist函式中盡量不要分配新的linknode) 

關於輸入

輸入的第一行是乙個整數m,代表第乙個鍊錶的元素個數(1 <= m <= 100000); 

第二行是m個整數,代表第乙個鍊錶的每個元素,題目保證m個整數從小到大排列。 

第三行是乙個整數n,代表第二個鍊錶的元素個數(1 <= n <= 100000); 

第四行使n個整數,代表第二個鍊錶的每個元素,題目保證n個整數從小到大排列。

關於輸出

輸出只有1行,輸出以空格分隔的 m + n 個整數,按照從小到大的順序排列。

例子輸入

3

1 3 5

32 4 6

例子輸出

1 2 3 4 5 6

1 #include2

using

namespace

std;

3struct

linknode4;

8 linknode *createlinklist();//

建立鍊錶: 從標準輸入讀取資料,並建立鍊錶,返回建立的煉表頭

9 linknode *mergelinklist(linknode *, linknode *);//

合併鍊錶:引數是兩個鍊錶的頭指標,返回合併後鍊錶的頭指標。合併後的鍊錶仍然有序。

10void displaylinklist(linknode *);//

遍歷並顯示合併後的鍊錶的元素。

11void destroylinklist(linknode *);//

釋放鍊錶空間:如果createlinklist中使用了new分配空間,這裡迴圈使用delete釋放

12 linknode *createlinklist()

1332

else

33 tmp->next =null;34}

35return

head;36}

37 linknode *mergelinklist(linknode *a, linknode *b)//

將b併入a

3854

if (tmp1->next->n < tmp2->n)

5558

if (tmp1->n > tmp2->n)

5969}70

else

7183

else

8489}90

}91}92

void displaylinklist(linknode *linklist)

93 while (tmp !=null);

101}

102void destroylinklist(linknode *linklist)

103112

}113

intmain()

114

view code

大水題 然而講鍊錶的時候我完全睡著了

於是這道題成為了我有史以來wa最多的一次

之後一定要好好看ppt……

謹記教誨

鍊錶 合併有序鍊錶

題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 題解我們這裡利用到了乙個前哨節點,因為兩個鍊錶實際上是已經排好序了,所以我們只需要比較兩個節點誰大誰小,找到小的接上去,然後那個...

鍊錶 合併有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。leetcode21 class solution else head head.next head.next l1 null?l2 l1 return result.next class solut...

鍊錶的合併

兩個線性表a,b,均以單鏈表做儲存結構,編寫演算法將表a和表b合併成乙個按元素值遞增有序排列的線性表c,要求用原表的結點空間存放表c define null 0 include stdio.h include malloc.h typedef struct lnode lnode,linklist ...