單鏈表的合併(交叉合併,公升序合併)

2021-10-23 09:16:32 字數 1412 閱讀 6466

單鏈表的合併情況有如下幾種:

(1)length(l1)=length(l2)

(2)length(l1)>length(l2)

(3)length(l1)(交叉合併的重點在交叉,不保證合併後的資料是有序的)

(公升序單鏈表合併的重點在公升序,可以保證合併後的資料是公升序的,但是前提是輸入的鍊錶是公升序的)

#include

#include

typedef struct lnode lnode,

*linklist;

linklist tailcreatlist

(lnode *l)

r->next=

null

;returnl;

}void

display

(lnode *l)

printf

("\n");

}linklist union

(lnode *

l1,lnode *

l2,lnode *l3)

elsel3=

l3->next;}if

(l1==null

&&l2

==null)if

(l1!=null

)else

returnl3;

}int main()

單鏈表交叉合併

輸入兩個單鏈表,使其交叉合併形成乙個單鏈表。如 1 3 5 7 9 2 4 6 8 0 合併後 1 2 3 4 5 6 7 8 9 0 如果乙個單鏈錶比另乙個長,則將多餘部分加到後面。具體 如下 include 定義鍊錶 typedef struct node node,nodep 鍊錶輸入資料 n...

倆單鏈表資料交叉合併

include typedef struct lnodelinklist 構造乙個單鏈表結構體 void createlist linklist l,int a,int n 後插法建立單鏈表 void display linklist l coutnext,p3 p1 p2分別指向倆表的第一節點 l...

單鏈表合併

某公司的面試題。兩個公升序單鏈表a,b,給定乙個節點c。不能申請其他節點情況下將a,b 按公升序排列。include include include struct link 建立鍊錶 nrandom 自由因子 ncount 鍊錶節點數目 link create const int nrandom,c...