在c語言中,我們通常通過「指標+結構體」來實現鍊錶,但是在python中並沒有指標,所以我們必須考慮其它 的方法。在這裡,我們通過定義節點類node,並通過類的巢狀引用來實現鍊錶。node類的定義就像鍊錶中的節點一樣,包含兩個物件,節點的值(data)和表示指向下乙個節點的next。在這裡我們通過節點的next物件再次引用類node來實現next指向下乙個節點的目標,這樣不斷巢狀應用,鍊錶也就實現了。**如下:
__author__ = 'jiangzhiheng'
#coding=utf-8
import copy
class node(): #定義乙個節點類
def __init__(self,val,p=0):
self.data = val
self.next = p
class linklist():
def __init__(self):
self.head = 0
def initlist(self,data):
self.head = node(data[0])
p = self.head
for i in data[1:]:
p.next = node(i)
p = p.next
def getlength(self): #獲得鍊錶元素的個數
p = self.head
length = 0
while p!=0:
length+=1
p = p.next
return length
def insert(self,item,index):
if index>self.getlength() or index<=0:
print('please enter a valid index')
return
p = self.head
q = node(item)
while (index-1)!=0: #在第index後面插入物件item
index=index-1
p = p.next
post = copy.deepcopy(p.next)
p.next = q
q.next = post
def getitem(self,index):
if index>self.getlength() or index<=0:
print('please enter a valid index')
return
p = self.head
while (index-1)!=0:
index=index-1
p = p.next
return p.data #返回鍊錶第index個物件的值
def remove(self,index):
if index>self.getlength() or index<=0:
print('please enter a valid index')
return
p = self.head
if index == 1:
self.head = p.next
return
while (index-2)!=0: #移除鍊錶中的第index物件
index=index-1
p = p.next
p.next = p.next.next
def search(self,item): #在鍊錶中搜尋物件item
p = self.head
i = 1
while p!=0:
if p.data == item:
return i
i+=1
p = p.next
l = linklist()
l.initlist(range(7))
print(l.getlength())
l.insert(10,5)
print(l.getitem(6))
l.remove(5)
print(l.search(5))
i = 1
while i結果
在這裡我們需要注意的是python中的『=』符號與c語言中的『=』區別,c語言的等號表示賦值,而python中的等號嚴格意義上並不是賦值,而只是引用或者參照
Python學習筆記01
import script1 import script2 from imp import reload reload scirpt1 import imp imp.reload script1 如果已經在另乙個視窗中修改並儲存了它,使用 reload 函式後將反映出修改後的變化.乙個名為myfil...
python學習筆記01
1 python是什麼型別的語言?答 python是一種物件導向 解釋型 動態型別的計算機程式語言。2 idle是什麼?答 idle是乙個純python下使用tkinter編寫的相當基本的ide.3 print的作用是什麼?答 列印結果。4 python中表示乘法份符號是什麼?答 符號是 作用是 重...
Python學習筆記01
現有資料分析技術平台 整合開發環境 ide integrated development environment python的ide idle,pycharm,anaconda,notepad,sublime python可以用來做什麼 資料分析及視覺化,網路爬蟲,網路程式設計,人工智慧 現在最好...