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...