鏈表面試題 合併兩個有序鍊錶, 合併後依然有序

2021-08-30 14:01:35 字數 842 閱讀 6990

// 合併兩個有序鍊錶 

slistnode *

mergeorderedlist

(slistnode *p1first, slistnode *p2first)

else

}else

else}}

//乙個鍊錶為空了

if(cur1 ==

null)if

(cur2 ==

null

)return result;

}

void

testmerge()

// 合併兩個有序鍊錶 

slistnode *

mergeorderedlist

(slistnode *p1first, slistnode *p2first)

else

//應該取鍊錶1的結點

//儲存鍊錶1的下乙個結點,讓迴圈繼續

next = node->next;

if(result !=

null

)else

node->next =

null

;//儲存新的最後乙個結點

tail = node;

if(node == cur1)

else

node = next;

}//乙個鍊錶為空了

if(cur1 ==

null)if

(cur2 ==

null

)return result;

}

面試題 合併兩個有序的鍊錶

題目 輸入兩個遞增有序的鍊錶,合併這兩個鍊錶後,使新鍊錶中的結點 也是遞增有序的。遞迴方式實現兩個有序鍊錶的合併 struct listnode listnode merge listnode phead1,listnode phead2 else if phead2 null listnode m...

開心IT面試題 兩個有序鍊錶的合併

題目 有兩個有序鍊錶,各自內部是有序的,但是兩個鍊錶之間是無序的 思路 假設兩個有序鍊錶分別為first和second。建立兩個單鏈表p1,p2。分別從煉表頭開始遍歷,比較p1 data和p2 data,若p1 data p2 data,取p2,p1 p1 next 否則取p1,p2 p2 next...

面試題目 合併兩個有序單鏈表

乙個面試題目,將兩個遞增的有序單鏈表合併成乙個遞增單鏈表。有兩種理解 1 new乙個單鏈表,返回新的頭節點 2 在原煉表上操作,返回新的頭節點 第一種實現較為簡單,只需要從頭比較鍊錶的節點,將較小的插入新鍊錶,被插入的節點指標後移,直至遍歷整個鍊錶。而在原表操作就相對複雜一點,主要有三部分 首先確定...