python學習筆記01 鍊錶的實現

2021-07-04 23:47:32 字數 2333 閱讀 4626

在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可以用來做什麼 資料分析及視覺化,網路爬蟲,網路程式設計,人工智慧 現在最好...