合併兩個排序的單鏈表

2021-09-07 06:00:53 字數 1114 閱讀 5355

【題目】

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是依照遞增排序的。

【分析】

合併單鏈表,須要找到頭結點,對照兩個煉表頭結點後,確定頭結點,再確定頭結點下乙個結點,迴圈遞迴的如前面一樣操作確定每乙個結點位置,同一時候考慮邊界條件,假設兩個鍊錶為空。則肯定無需合併了,就是空鍊錶,假設乙個鍊錶為空,還有乙個不為空,則返回不為空的鍊錶。詳細分析流程能夠看以下的樣例:

【測試**】

#include

#include

#include

<

stack

>

typedef int data_type;

typedef struct node node_t;// 給struct node取個別名node_t

typedef struct node * node_ptr;//給struct node*取個別名node_ptr

typedef struct node

;//鍊錶初始化

node_t * init()

//在鍊錶後面插入結點

node_t *insert_back(node_ptr p , data_type data)

node_t * merge(node_ptr list1_head, node_ptr list2_head)

else

return merge_head;

}//正常列印

void print(node_ptr p)

node_ptr list

= p;

while(list

->node_next !=

null)

printf("%d ",list

->

data);

printf("\n");

}void main()

【輸出】

刷演算法 合併兩個排序的單鏈表

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。首先考慮兩個鍊錶的頭部哪個成為新鍊錶的頭,顯然是值小的那個是新的頭 然後是合併時,兩個鍊錶上分別有乙個指標cur1和cur2,比較兩個指標指向的節點值大小,較小的鏈結到新鍊錶的尾部,且指標往後移動乙個,較大的...

刷演算法 合併兩個排序的單鏈表

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。首先考慮兩個鍊錶的頭部哪個成為新鍊錶的頭,顯然是值小的那個是新的頭 然後是合併時,兩個鍊錶上分別有乙個指標cur1和cur2,比較兩個指標指向的節點值大小,較小的鏈結到新鍊錶的尾部,且指標往後移動乙個,較大的...

合併兩個有序單鏈表

include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...