class
lnode
:'''
self.elem: 結點資料域
方法的第二個引數名是為了與python自帶函式next()區分
'''def__init__
(self, elem, next_ =
none):
self.elem = elem
self.
next
= next_
鍊錶類定義如下,其中包含了很多鍊錶操作方法,如向鍊錶中插入元素、刪除元素、遍歷鍊錶、翻轉鍊錶等。
# 自定義異常類
class
linkedlistunderflow
(valueerror)
:pass
# 鍊錶類
class
llist()
:def
__init__
(self)
: self._head =
none
# 初始化頭結點為空
# 判斷表是否為空
defis_empty
(self)
:return self._head is
none
# 表頭插入資料:新資料指標指向原頭結點,頭結點前移至新結點
defprepend
(self, elem)
: self._head = lnode(elem, self._head)
# 刪除表頭
defpop
(self)
:if self._head is
none
:# 空表,引發異常
raise linkedlistunderflow(
'in pop'
) e = self._head.elem
self._head = self._head.
next
# 表頭後移,原表頭的下乙個結點成為新head結點
return e
# 在鍊錶最後插入元素
def(self, elem)
:if self._head is
none
:# 空表
self._head = lnode(elem, self._head)
return
p = self._head
while p.
next
isnot
none
:# 尋找表尾
p = p.
next
p.next
= lnode(elem)
# 插入元素,表尾的next結點為none
# 刪除表中最後乙個元素
defpop_last
(self)
:if self._head is
none
:# 空表
raise linkedlistunderflow(
'in pop_last'
) p = self._head
if p.
next
isnone
:# 表中只有乙個元素
e = p.elem
self._head =
none
return e
while p.
next
.next
isnot
none
:# 尋找倒數第二個結點
p = p.
next
e = p.
next
.elem
p.next
=none
return e
# 尋找滿足給定條件的表元素
deffilter
(self, pred)
: p = self._head
while p is
notnone
:if pred(p.elem)
:yield
p = p.
next
# 檢視被操作表的當前情況,即遍歷輸出表的所有元素
defprintall
(self)
: p = self._head
while p is
notnone
:print
(p.elem, end ='')
if p.
next
isnot
none
:print
(', '
, end ='')
p = p.
next
print
('\n'
)# 遍歷操作表的每乙個元素
deffor_each
(self, proc)
:# proc:操作函式,如abs()
p = self._head
while p is
notnone
: proc(p.elem)
p = p.
next
# 鍊錶反**表頭結點變為表尾結點,表尾結點變為表頭結點
defdev
(self)
: p =
none
while self._head is
notnone
: q = self._head
self._head = q.
next
q.next
= p p = q
self._head = p
return
python實現單鏈表
code python code coding utf 8 class node def init self,value self.data value self.next none class linklist def init self,data 0 self.head none self.in...
單鏈表的python實現
首先說下線性表,線性表是一種最基本,最簡單的資料結構,通俗點講就是一維的儲存資料的結構。順序表示指的是用一組位址連續的儲存單元依次儲存線性表的資料元素,稱為線性表的順序儲存結構或順序映像 鏈式表示指的是用一組任意的儲存單元儲存線性表中的資料元素,稱為線性表的鏈式儲存結構。而他既可以是連續的也可以不連...
多種單鏈表 python實現
本 參照裘宗燕老師的 資料結構與演算法 python語言描述 看了幾章感覺不錯,講解十分清晰 話不多說直接上碼 coding utf 8 created on thu jul 18 10 26 53 2019 author 糰子 import random class lnode def init ...