【題目】
輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是依照遞增排序的。
【分析】
合併單鏈表,須要找到頭結點,對照兩個煉表頭結點後,確定頭結點,再確定頭結點下乙個結點,迴圈遞迴的如前面一樣操作確定每乙個結點位置,同一時候考慮邊界條件,假設兩個鍊錶為空。則肯定無需合併了,就是空鍊錶,假設乙個鍊錶為空,還有乙個不為空,則返回不為空的鍊錶。詳細分析流程能夠看以下的樣例:
【測試**】
#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...