從頭結點依次遍歷,直到最後乙個節點(node.nex = none) 結束。class
node
(object):
def__init__
(self):
self.data = data
self.nex = none
#初始化鍊錶
def__init__
(self):
self.head = none
若煉表為空,則當前節點為頭節點,否則找到尾節點,將尾節點的next指向該節點即可。def
len(self):
pre = self.head
length = 0
while pre:
length += 1
pre = pre.nex
return length
#使用節點的值初始化節點
node = node(data)
if self.head is
none:
self.head = node
else:
pre = self.head
while pre.nex:
pre = pre.nex
pre.nex = node
給出索引,獲取索引指向的節點
給出節點的索引和值,設定該索引處節點的值def
get(self,index):
if len(self)or index<0:
return
none
else:
pre = self.head
while(index):
pre = pre.nex
index -= 1
return pre
def
set(self,index,data):
node = self.get(index)
if node:
node.data = data
return node
def
insert
(self,index,data):
node = node(data)
if abs(index+1) > len(self):
return
false
if index = 0:
node.nex = self.head
self.head = node
else:
if pre:
pre = self.get(index-1)
node.nex = pre.nex
pre.nex = node
else:
return
false
return node
"""刪除某個元素"""
defdelete
(self, index):
f = index if index > 0
else abs(index + 1)
if len(self) <= f:
return
false
pre = self.head
index = index if index >= 0
else len(self) + index
prep = none
while index:
prep = pre
pre = pre.nex
index -= 1
ifnot prep:
self.head = pre.nex
else:
prep.nex = pre.nex
return pre.data
"""反轉鍊錶"""
def__reversed__
(self):
""" 1.pre-->next 轉變為 next-->pre
2.pre 若是head 則把 pre.nex --> none
3.tail-->self.head
:return:
"""defreverse
(pre_node, node):
if pre_node is self.head:
pre_node.nex = none
if node:
next_node = node.nex
node.nex = pre_node
return reverse(node, next_node)
else:
self.head = pre_node
return reverse(self.head, self.head.nex)
"""清空鍊錶"""
defclear
(self):
self.head = none
單向鍊錶(Python)
以下為結點的定義 class node def init self,value,next none self.value value self.next next length 0 鍊錶的長度,規定只有乙個頭結點時長度為0判斷鍊錶是否為空 def isempty return length 0將結點...
Python 實現單向鍊錶
鍊錶顧名思義就是 鏈 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的。跟陣列不同鍊錶不用預先定義大小,而且硬體支援的話可以無限擴充套件。陣列需要預先定義大小,無法適應資料動態地增減,資料小於定義的長度會浪費記憶體,...
Python 實現單向動態鍊錶
鍊錶顧名思義就是 鏈 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的。跟陣列不同鍊錶不用預先定義大小,而且硬體支援的話可以無限擴充套件。陣列需要預先定義大小,無法適應資料動態地增減,資料小於定義的長度會浪費記憶體,...