python 單鏈表的操作

2021-08-30 11:32:07 字數 3416 閱讀 8211

單鏈表的基本操作

首先建立乙個結點類的結構,以便後面的操作

class node(object):

def __init__(self,data):

self.data=data

self.next=none

建立乙個鍊錶類

class linklist(object):

def __init__(self):

self.head=node(none)

#判斷是否為空

def isempty(self):

p=self.head#頭指標

if p.next==none:

print("link is empty")

return true

return false

#列印鍊錶

def printlink(self):

if self.isempty():

return false

p=self.head

while p:

print(p.data,end='')

p=p.next

建立單鏈表是乙個動態生成鍊錶的過程,就是從乙個空的單鏈表開始,依次建立各個元素的結點,並把它們依次插入鍊錶

def initlist(self,data):

self.head=node(data[0])#頭結點

p=self.head#頭指標

for i in data[1:]:

node=node(i)

p.next=node

p=p.next

計算單鏈表的長度

在使用鍊錶時,經常需要求表的長度,為此建立乙個求表長的函式,從左到右,遍歷表中所有的元素,並完成計數

def lengthlist(self):

if self.isempty():

return 0

p=self.head

cut=0

while p:

cut+=1

p=p.next

return cut

單鏈表的插入

假設我們要把結點q插入到結點p的後面,只要把結點q插入到結點p和結點p.next 之間就行。

只要讓q.next和p.next 指標改變,讓p的後繼結點改為q的後繼結點,再把q的後繼結點變成p的後繼結點,插入操作的順序不能打亂

def insertlist(self,s,data):

if self.isempty() or s<0 or s>self.lengthlist():

print("insert failed")

return

p=self.head

index=1

while index表單的刪除

如果想要刪除結點q,其實就是把它的前繼結點p指標繞過q,直接指向q的後繼結點 如圖

讓p.next 直接為p 的next  的 next , p  的next 為q ,所有就是p.next=q.next

def delelist(self,s):

if self.isempty() or s<0 or s>self.lengthlist():

print("dele failed")

return

index =1

p=self.head

while index整體**如下

#-*- coding:utf-8 -*-

#__auther__:wm

class node(object):

#定義乙個結點類

def __init__(self,data):

self.data=data

self.next=none

#建立乙個鍊錶類

class linklist(object):

def __init__(self):

self.head=node(none)

#判斷是否為空

def isempty(self):

p=self.head#頭指標

if p.next==none:

print("link is empty")

return true

return false

#列印鍊錶

def printlink(self):

if self.isempty():

return false

p=self.head

while p:

print(p.data,end='')

p=p.next

#建立單鏈表

def initlist(self,data):

self.head=node(data[0])#頭結點

p=self.head#頭指標

for i in data[1:]:

node=node(i)

p.next=node

p=p.next

#單鏈表的長度

def lengthlist(self):

if self.isempty():

return 0

p=self.head

cut=0

while p:

cut+=1

p=p.next

return cut

#單鏈表的插入

def insertlist(self,s,data):

if self.isempty() or s<0 or s>self.lengthlist():

print("insert failed")

return

p=self.head

index=1

while indexself.lengthlist():

print("dele failed")

return

index =1

p=self.head

while indexself.lengthlist():

print("error!")

return

index=1

p=self.head

while index

index+=1

p=p.next

print("第{}個值是{}".format(s,p.data))

python中的單鏈表操作

這只是一些簡單的操作,等有時間會更新一些高階操作 coding utf 8 class node def init self,data 0,next none self.data data 資料 self.next none class llink def init self self.head n...

單鏈表的操作

單鏈表是一種非常重要的資料結構,下面用c語言對單鏈表的操作做乙個簡單的總結 typedef struct nodenode,linklist 1 單鏈表的建立 建立乙個單鏈表,鍊錶裡面存放有十個偶數 2到20 有頭節點,頭節點不存放元素。linklist createlinklist return ...

單鏈表的操作

1.定義單鏈表的介面函式 ifndef linklist h define linklist h typedef int elemtype typedef struct node node node initnode bool addnode node head,elemtype data 頭插法 ...