合併兩個有序鍊錶

2021-09-26 10:42:16 字數 3236 閱讀 1395

題目描述:

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

1、首先匯入實現鍊錶結構的python模組(自定義)

chaintable

#用python實現資料結構鍊錶

class node:

'''定義節點類

data:節點儲存的資料

next_node:下乙個節點物件

'''def __init__(self,data,pnext=none):

self.data=data

self.next_node=pnext

def __repr__(self):

'''定義node的字元輸出

print為輸出data

'''return str(self.data)

'''鍊錶類:

屬性:煉表頭:head

鍊錶長度:length

方法:以下

'''class chaintable:

def __init__(self):

self.head=none

self.length=0

'判斷是否為空列表'

def isempty(self):

return self.length==0

'在鍊錶尾增加乙個節點'

item = none

if isinstance(dataornode, node):

item = dataornode

else:

item = node(dataornode)

if not self.head:

self.head=item

self.length+=1

else:

node=self.head

'迴圈至最後乙個節點'

while node.next_node:

node=node.next_node

node.next_node=item

self.length+=1

'刪除乙個節點'

def delete(self,index):

if self.isempty():

print("sorry,the chain table is empty")

return

if index<0 or index>=self.length:

print("error:out of index")

return

if index==0:

self.head=self.head.next_node

self.length-=1

return

index=0

node=self.head

pre_node=self.head

while node.next_node and index=self.length:

print("error:out of index")

return

index=0

node=self.head

while node.next_node and index=self.length:

print("error:out of index")

return

index=0

node=self.head

while node.next_node and index=self.length:

print("error:out of index")

return

item=none

if isinstance(dataornode,node):

item=dataornode

else:

item=node(dataornode)

if index==0:

item.next_node=self.head

self.head=item

self.length+=1

return

index=0

node=self.head

prev=self.head

while node.next_node and index'

node=node.next_node

else:

nlist+=str(node.data)

node=node.next_node

return nlist

def __getitem__(self, ind):

if self.isempty() or ind < 0 or ind >= self.length:

print("error: out of index")

return

return self.getitem(ind)

def __setitem__(self, ind, val):

if self.isempty() or ind < 0 or ind >= self.length:

print("error: out of index")

return

self.update(ind, val)

def __len__(self):

return self.length

2、實現題目要求

**:import chaintable as c

class solution(c.chaintable):

def __init__(self,l1,l2):

self.l1=l1

self.l2=l2

self.new_lst=self.mergetwolists(self.l1,self.l2)

def mergetwolists(self, l1, l2):

new_list=c.chaintable()

index1=0

index2=0

while(true):

if int(l1.getitem(index1))<=int(l2.getitem(index2)):

index1+=1

if index1==int(l1.length):

while index2結果:

請輸入l1:124

請輸入l2:134

1->1->2->3->4->4

合併兩個有序鍊錶

鍊錶的題目總是讓我很惆悵。動輒就會runtime error。比如這題,額外用了乙個節點的空間來儲存頭節點。我很不情願多用這個空間,不過貌似不行。貌似不行,實際可行,見附錄。把頭節點提出迴圈 實現類 class solution else if l1 null p next l1 if l2 nul...

合併兩個有序鍊錶

三個指標乙個儲存la鍊錶 乙個儲存lb鍊錶,乙個指向新的鍊錶。鍊錶的插入,兩個指標,乙個是head,乙個指向head後面的鏈,新插入的元素位於head後面。執行該 自己外加上class類。static class node public static void main string args st...

合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4思路 很簡單就是二路歸併的思想,時間複雜度o n definition for singly linked list.struct listno...