單鏈表的Python實現

2021-09-26 11:15:23 字數 2682 閱讀 5753

鍊錶是資料結構中最基本常用的,c++語言中單鏈表是利用指標操作實現的,python作為物件導向程式設計的,可以使用建立乙個node類來實現鍊錶,利用類的屬性引用來代替指標操作。

下面我們建立了乙個節點類,然後編寫了幾個鍊錶操作,包括建立,插入,刪除,輸出等:

class

node()

:# 初始化 建構函式

def__init__

(self,value,

next

=none):

self.value=value

self.

next

=next

defcreatlist

(n):

if n<=0:

return

false

if n==1:

return node(1)

# 只有乙個節點

else

: root=node(1)

tmp=root

for i in

range(2

,n+1):

# 乙個乙個的增加節點

tmp.

next

=node(i)

tmp=tmp.

next

return root # 返回根節點

defprintlist

(head)

:# 列印鍊錶

p=head

while p!=

none

:print p.value

p=p.

next

deflistlen

(head)

:# 鍊錶長度

c=0 p=head

while p!=

none

: c=c+

1 p=p.

next

return c

definsert

(head,n)

:# 在n的前面插入元素

if n<

1or n>listlen(head)

:return

p=head

for i in

range(1

,n-1):

# 迴圈四次到達 5

p=p.

next

a=raw_input

("enter a value:"

) t=node(value=a)

t.next

=p.next

# 這裡注意

p.next

=t return head # 把6放在t的後面 t放在原先p的後面

defdellist

(head,n)

:# 刪除鍊錶

if n<

1or n>listlen(head)

:return head

elif n is1:

head=head.

next

# 刪除頭

else

: p=head

for i in

range(1

,n-1

):

p=p.

next

# 迴圈到達 2次

q=p.

next

p.next

=q.next

# 把5放在3的後面

return head

defmain()

:print

"create a linklist"

head=creatlist(7)

printlist(head)

print

print

"___________________________"

n1=raw_input

("enter the index to insert"

) n1=

int(n1)

insert(head,n1)

printlist(head)

print

print

"___________________________"

n2=raw_input

("enter the index to delete"

) n2=

int(n2)

dellist(head,n2)

printlist(head)

if __name__==

'__main__'

: main(

)# 主函式呼叫

執行結果如下:

run c:\\anaconda\\node.py

create a linklist12

3456

7 ___________________________

enter the index to insert 6

enter a value:9912

34599

67___________________________

enter the index to delete 412

35996

7

單鏈表的python實現

首先說下線性表,線性表是一種最基本,最簡單的資料結構,通俗點講就是一維的儲存資料的結構。順序表示指的是用一組位址連續的儲存單元依次儲存線性表的資料元素,稱為線性表的順序儲存結構或順序映像 鏈式表示指的是用一組任意的儲存單元儲存線性表中的資料元素,稱為線性表的鏈式儲存結構。而他既可以是連續的也可以不連...

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實現

class lnode self.elem 結點資料域 方法的第二個引數名是為了與python自帶函式next 區分 def init self,elem,next none self.elem elem self.next next 鍊錶類定義如下,其中包含了很多鍊錶操作方法,如向鍊錶中插入元素 ...