合併兩個排序的鍊錶

2021-08-16 01:59:51 字數 1268 閱讀 6725



面試題

17:合併兩個排序的鍊錶

題目:輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增的排序的,如圖中的鍊錶

1和鍊錶

2,則合併之後的公升序鍊錶

3,結點的定義如下:

struct  listnode

我的**如下:

#include

#include

#include

typedef

struct

node

node

,*list

;//list == node *

//單鏈表以null結尾

void

initlist(

list

plist)

plist

->next =

null;

} list

buynode(

intval)

//尾插

void

insert_tail(

list

plist

,int

val)

//o(n)

node

*q = buynode(

val);

//將q插入在p的後面

q->next = p->next;

p->next = q; }

//從頭到尾列印鍊錶

void

show(

list

plist)

printf(

"\n");

} node

* marg(

list

plist1

,list

plist2)

else

if(p2->data >=p1->data && p2->data>= p1->next->data)

else

if(p2->data < p1->data)

} i++; }

return

head; }

intmain()

for(int

i=0; i<10; i=i+2)

node

*head=marg(&plist1,&plist2);

show(head);

// show(&plist1);

return0;

}

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...

合併兩個排序鍊錶

描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...

合併兩個排序鍊錶

問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...