連結串列的實現 輸出和反向 python

2022-08-05 18:30:17 字數 1271 閱讀 7239

連結串列節點包含兩個元素:節點的值和指向的下一個節點,因此可以定義連結串列的類為:

class

linknode:

def__init__(self,value=none,next=none):

self.value=value

self.next=next

給定一個列表l,用此列表生成一個連結串列時,只需按順序遍歷列表,使用遍歷到的值生成連結串列節點,並在前後兩個節點之間建立聯絡,最後返回頭節點。

def

createlink(l):

head=linknode(l[0])

nn=head

for i in l[1:]:

nn.next=linknode(i)

nn=nn.next

return head

輸出一個連結串列,按順序訪問列表節點即可。

def

printlist(head):

if head==none: return

node=head

while node!=none:

print

(node.value)

node=node.next

連結串列的反向是指對連結串列的方向進行反轉。如給定連結串列:1->2->3->4->5,

反向後的連結串列為:5->4->3->2->1

反向的關鍵在於,在反向的過程中,不能丟掉了原來連結串列節點之間的聯絡,如對前兩個節點反向時,執行2.next=1後,則對於前兩個節點,方向為2->1

但對於整個連結串列來說,由於2.next已經被更新,連結串列成為

就無法繼續訪問後續節點。所以,在反向的過程中,要記錄的節點有三個:前一個節點pre,當前節點cur,下一個節點next,這樣,在執行cur.next=pre後,還可以繼續對next進行操作,**如下。

def

reverselink(head):

if head==none: return

if head.next==none: return

head

reversehead=none

pre,cur,next=none,head,head.next

while next!=none:

cur.next=pre

pre=cur

cur=next

next=next.next

else:reversehead=cur

return reversehead

Python 反向迭代和實現反向迭代

案例 實現一個連續的浮點數發生器 floatrange,根據給定範圍 start end 和步進值,產生一些列的浮點數,例如 floatrange 3 4 0 2 ,將產生下列序列 正向 3 0 3 2 4 0 反向 4 0 3 8 3 0 如何實現? 方法1 列表翻轉 usr bin python...

python的 和

1 兩個乘號就是乘方,比如2 4 結果就是2的4次方,結果是16 一個乘號 ,如果運算元是兩個數字,就是這兩個數字相乘,如2 4 結果為8 如果是字串 列表 元組與一個整數n相乘,返回一個其所有元素重複n次的同型別物件,比如 str 3將返回字串 strstrstr 2 如果是函式定義中引數前的...

python 樹的寬度遍歷 二叉樹的反向層次遍歷

問題描述 給定一個二叉樹,返回其按層次遍歷的節點值。 即逐層地,從右到左訪問所有節點 。 例如 給定二叉樹 3 9 20 null null 15 7 3 9 20 15 7 返回其層次遍歷結果 3 20 9 7 15 class treenode def init self x left none...