Python 自定義雙向鍊錶

2021-10-07 09:11:25 字數 2905 閱讀 2440

class

item

(object):

#定義鍊錶的每乙個節點

def__init__

(self,data,last=

none

,next

=none,)

: self.data = data #以字典形式,存放資料

self.last = last#用於指向上乙個節點

self.

next

=next

#用於指向下乙個節點

class

linkedlist

(object):

#實現鍊錶的主要結構與各功能

def__init__

(self)

: self.head = item(,)

#定義頭節點,不存放資料

defadd

(self,data)

:#增加乙個節點

sign = self.head

while

true

:#找到sign.next == none,即鍊錶尾部

if sign.

next

==none

:break

sign = sign.

next

body = item(data,last=sign)

#用傳過來的資料例項化乙個節點物件,last指向鍊錶尾部

sign.

next

= body #連線到鍊錶尾部

defmove

(self,keyword,keyvalue)

: sign = self.head.

next

#游標,判斷鍊錶走到**了

status =

true

#狀態,判斷是否找到了符合要求的的節點

while

true

:try

:if keyvalue == sign.data[keyword]

:break

except keyerror as e:

print

('key1error:資料中不存在%s'

%e )

return

false

if sign.

next

==none

:#如果走到鍊錶尾部,說明沒有找到該節點

status =

false

break

sign = sign.

next

if status:

#如果刪除成功,返回true,不成功返回false

sign.last.

next

= sign.

next

if sign.

next

!=none

: sign.

next

.last = sign.last

sign.last =

none

return

true

else

:return

false

defupdate

(self,data,keyword=

none

,keyvalue=

none):

#修改節點資料

if keyword:

#定位節點

sign = self.head.

next

status =

true

while

true

:try

:if keyvalue == sign.data[keyword]

:break

except keyerror as e:

print

('key1error:資料中不存在%s'

% e)

return

false

if sign.

next

==none

: status =

false

break

sign = sign.

next

if status:

#更新data資料

sign.data = data

return

true

else

:return

false

defget

(self,index)

:#根據位置查詢

res = self.get_all(

)#獲取到列表形式鍊錶結構

try:

#按照輸入的下標查詢

return res[index]

except

:return

none

defget_all

(self)

:#查詢整個鍊錶資料

sign = self.head

res =

while

true

:#遍歷整個鍊錶,並轉成列表形式

if sign.

next

==none

:if sign.data:

break

else

:if sign.data:

sign = sign.

next

return res

defsize

(self)

:#獲取鍊錶有效資料個數

return

len(self.get_all())

#直接輸出列表形式的鍊錶長度即有效資料個數

C 雙向鍊錶及自定義鍊錶

一 雙向鍊錶linkedlist linkedlist集合類沒有非泛型集合的類似版本。linkedlist是乙個雙向鍊錶,其元素指向它前面和後面的元素。鍊錶的優點是,如果將元素插入列表的中間位置,使用鍊錶會非常快。在插入乙個元素時,只需修改上乙個元素的next引用和下乙個元素的previous引用,...

自定義鍊錶

鍊錶是非連續 無順序的資料結構,鍊錶中元素與元素之間的記憶體位址沒有順序關係。鍊錶由乙個個結點組成,結點中儲存兩類資訊,第一類是儲存入結點的資料,第二類是結點的指向。鍊錶分為單項鍊表,雙向鍊錶,環形鍊錶,單項鍊表中只有乙個結點指向,指向的的下乙個結點的記憶體位址,只能單向移動,單項操作 雙向鍊錶有兩...

自定義鍊錶

author qcg version 2019 5 6.description 自定義鍊錶 頭尾部的兩步操作 1.插入節點 next指向node 2.變更節點 last指標後移 node.next insertnode 這是插入元素的操作 public class mylinkedlist node...