コード要素を二重にリンクされたリストを2019.9.19-と追加

#コーディング:UTF-8

クラスノード(オブジェクト):
"" "結點" ""
デフ__init __(自己、アイテム):
self.elem =項目
self.next =なし
self.pre =なし


クラスDoubuleLinkList(オブジェクト):
"" "雙向鏈表" ""
デフ__init __(自己、ノード=なし):
自己.__ヘッド=ノード

#のデフis_empty(自己):
"" "鏈表是否爲空" 「」
.__自己を返すヘッド==なし

長DEF(自己):
"" "鎖長" ""
モバイルノードのトラバース用CURプルトニウム旅行
CUR =自己.__ヘッド
COUNTレコード番号
COUNT = 0
ながらCUR =なし:!
COUNT + = 1。
CUR = cur.next
リターン・カウント

デフ(自己)旅行:
"" "遍歷整個鏈表" ""
CUR =自己.__頭を
しばらくCUR =なし:!
プリント(cur.elem、エンド= " ")
CUR = cur.next
印刷("")

追加DEF(セルフ、項目):
「」「添加元素リストヘッダ、第1の補間方法」「」
ノード=ノード(項目)
ヘッドnode.next .__ =セルフ
セルフヘッド.__ =ノード
node.next.prevノード=

DEF(自己、項目)追加します。
"" "鏈表尾部添加元素、尾插法" ""
ノード=ノード(項目)
:self.is_empty()もし
自己.__ヘッド=ノード
他:
CUR =自己.__ヘッド
CUR一方.next =なし!:
CUR = cur.next
cur.next =ノード
node.prev = CUR

INSERT DEF(セルフ、POS、項目):
"" "添加元素指定された場所
:0からのparam POS
" ""
POS IF <= 0:
self.add(項目)
ELIFのPOS>(self.length() - 1)。 :
self.append(項目)
他:
CUR =自己.__ヘッド
COUNT = 0
一方COUNT <POS:
。COUNT = + 1
CUR = cur.next
#場合、ループ終了、CUR点位置posの
ノード=ノード(アイテム)
node.next CUR =
node.next = cur.prev
cur.prev.next =ノードは
=ノードをcur.prev

DEF(セルフ、項目)を削除します。
「」「ノードの削除」「」
=自己CURヘッド.__
プリ=なし
ながらCUR =なし:!
cur.elem IF ==アイテム:
#は、最初のノードがヘッドノードであるか否かを判断
#ヘッドノード
IF ==自己.__ヘッドCUR:
cur.nextセルフヘッド.__ =
他:
pre.next = cur.next
BREAK
他に:
事前= CUR
CUR = cur.next

:DEF(自己、アイテム)を検索
"" "查找節點是否存在" ""
CUR =自己.__頭を
しばらくCUR =なし:!
== cur.elemかの項目:
Trueを返し
、他:
curが= cur.next
Falseを返します

もし__name__ == "__main__":
DLL = DoubuleLinkList()

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/lishuide/p/11546497.html