合併兩個排序的鍊錶

2021-08-28 02:30:31 字數 1042 閱讀 1469

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

# -*- coding:utf-8 -*-

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class solution:

# 返回合併後列表

def merge(self, phead1, phead2):

# write code here

if phead1==none:

return phead2

if phead2==none:

return phead1

phead3=listnode(0) #頭結點,值為0

tmp=phead3 #tmp臨時指標,phead3新煉表得頭指標

while phead1 and phead2:

if phead1.val<=phead2.val:

tmp.next=listnode(phead1.val)

phead1=phead1.next

else:

tmp.next=listnode(phead2.val)

phead2=phead2.next

tmp=tmp.next #tmp變成新的節點(新賦值的節點)

if phead1: #phead1不空,phead2空,直接加入phead1中剩餘元素

tmp.next=phead1

if phead2: #phead1空,phead2不空,直接加入phead2中剩餘元素

tmp.next=phead2

return phead3.next #返回頭結點之後的元素

首先判斷兩個鍊錶是否為空,若乙個為空,則返回另乙個。

逐個對比兩個鍊錶中的元素,小的節點先插到新的鍊錶中,直到兩個鍊錶中的某個鍊錶元素全部插完,另乙個鍊錶剩下的元素直接加入新煉表得尾部。

合併兩個排序鍊錶

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