面試題
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。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...