單向鍊錶 python

2021-08-07 07:12:58 字數 2754 閱讀 2044

class

node

(object):

def__init__

(self):

self.data = data

self.nex = none

#初始化鍊錶

def__init__

(self):

self.head = none

從頭結點依次遍歷,直到最後乙個節點(node.nex = none) 結束。

def

len(self):

pre = self.head

length = 0

while pre:

length += 1

pre = pre.nex

return length

若煉表為空,則當前節點為頭節點,否則找到尾節點,將尾節點的next指向該節點即可。

#使用節點的值初始化節點

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 實現單向動態鍊錶

鍊錶顧名思義就是 鏈 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的。跟陣列不同鍊錶不用預先定義大小,而且硬體支援的話可以無限擴充套件。陣列需要預先定義大小,無法適應資料動態地增減,資料小於定義的長度會浪費記憶體,...