鍊錶是資料結構中最基本常用的,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 鍊錶類定義如下,其中包含了很多鍊錶操作方法,如向鍊錶中插入元素 ...