5,兩個不交叉的有序鍊錶的合併

2021-06-09 18:05:35 字數 918 閱讀 2418

思路:比較大小,控制指標指向,如果乙個鍊錶已經結束,則把剩下的鍊錶加上去即可。

注意:要判斷輸入時候正確。

兩個鍊錶是否為空鍊錶等特殊情況。

如果交叉了怎麼辦。後面會介紹。

// 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 拿到這個題目我們就來分析一下 首先分析合併兩...