單鏈表 Python實現

2021-10-11 20:13:54 字數 2880 閱讀 7614

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