鍊錶 將兩個遞增鍊錶合併為乙個遞減鍊錶

2022-05-02 04:42:07 字數 1407 閱讀 9268

王道p38t13

主**:

linklist merge_desc(linklist &a,linklist &b)

else

t->next=c->next;

c->next=t;

}if(ap!=null)

r=ap;

else

r=bp;

while(r!=null)

return

c;}

完整**:

#include #include 

using

namespace

std;

typedef

struct

lnode

lnode(

intx)

}lnode;

typedef lnode*linklist;

linklist build_list(

int * arr,int

n)

returnl;}

void show_list(linklist&l)

puts(

"");

}linklist merge_desc(linklist &a,linklist &b)

else

t->next=c->next;

c->next=t;

}if(ap!=null)

r=ap;

else

r=bp;

while(r!=null)

returnc;}

intmain();

int b_arr[5]=;

linklist a=build_list(a_arr,5

); linklist b=build_list(b_arr,5

); show_list(a);

show_list(b);

linklist c=merge_desc(a,b);

show_list(c);

}

view code

注意:(1)這段**是我在白紙上手寫,然後上機驗證的。上機驗證發現,小於符號錯寫為了大於符號

while(ap!=null && bp!=null)

else

t

->next=c->next;

c->next=t;

}

最後合併的元素應該單調遞減,所以用尾插法應該每次選擇最小的元素進行尾插。

(2)我在白紙書寫紫色**時,if和else語句塊都寫了,驗證時發現可以簡寫到公共語句塊末尾。

兩個鍊錶合併為乙個鍊錶

include include typedef struct node node typedef struct node linklist using namespace std void creat linklist l,int n cout the linklist is full next n...

將兩個遞增的有序鍊錶合併為乙個遞增的有序鍊錶

將兩個遞增的有序鍊錶合併為乙個遞增的有序鍊錶。要求結果鍊錶仍使用原來兩個鍊錶的儲存空間,不另外占用其它的儲存空間。表中不允許有重複的資料。void mergelist linklist la,linklist lb,linklist lc 取較小者la中的元素,將pa鏈結在pc的後面,pa指標後移 ...

兩個公升序鍊錶合併為乙個公升序鍊錶

linklist mergeheaderlinklist linklist l,linklist p else while header2 next null if header1 next null printf 找到比 d大的值 d n header2 next data,header1 nex...