思路:比較大小,控制指標指向,如果乙個鍊錶已經結束,則把剩下的鍊錶加上去即可。
注意:要判斷輸入時候正確。
兩個鍊錶是否為空鍊錶等特殊情況。
如果交叉了怎麼辦。後面會介紹。
// linktable.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include using namespace std;
//鍊錶的結構體
struct node
;//2,找第4個結點
struct node * create( string & str_link )
return phead;
}void out_link( struct node * phead )
cout << endl;
}struct node * merge_link( struct node * phead1, struct node * phead2 )
else
pnode = pnode->next;
} if( pnode2 )
pnode->next = pnode2;
if( pnode1 )
pnode->next = pnode1;
return phead;
}void test()
{ string str;
cin >> str;
struct node *phead1 = create( str );
cin >> str;
struct node *phead2 = create( str );
struct node * phead = merge_link( phead1, phead2 );
cout << "after merge: "<
5 合併兩個有序鍊錶
題 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 class listnode public static listnode mergetwolists listnode l1,listn...
合併兩個有序的鍊錶
記得以前寫過乙個合併兩個有序陣列的問題,也就是相互比較並放入合適的位置,今天的這個演算法和陣列的問題其實是一樣的,這裡不多做介紹了,直接貼出 鍊錶的定義 typedef struct node node,list 首先給出非遞迴版本的 合併 list merge two list list list...
合併兩個有序的鍊錶
題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。例如輸入兩個鍊錶分別1,3,5和2,4,6,合併後的鍊錶則是1,2,3,4,5,6.鍊錶結點定義如下 typedef struct listnode node,pnode 拿到這個題目我們就來分析一下 首先分析合併兩...