python資料結構鍊錶之單向鍊錶 例項講解

2022-10-04 08:15:11 字數 2995 閱讀 4948

單向鍊錶

表元素域elem用來存放具體的資料。

鏈結域next用來存放下乙個節點的位置(python中的標識)

變數p指向鍊錶的頭節點(首節點)的位置,從p出發能找到表中的任意節點。

節點實現

class no程式設計客棧de(object):

"""單鏈表的結點"""

def __init__(self,item):

# item存放資料元素

self.item = item

# next是下乙個節點的標識

self.next = none

單鏈表的操作

is_empty() 鍊錶是否為空

length() 鍊錶長度

tr**el() 遍歷整個鍊錶

add(item) 鍊錶頭部新增元素

append(item) 鍊錶尾部新增元素

insert(pos, item) 指定位置新增元素

remove(item) 刪除節點

search(item) 查詢節點是否存在

單鏈表的實現

class singlepnkpst(object):

"""單鏈表"""

def __init

self.__head = none

def is_empty(self):

"""判斷鍊錶是否為空"""

r程式設計客棧eturn self.__head == none

def length(self):

"""鍊錶長度"""

# cur初始時指向頭節點

cur = self.__head

count = 0

# 尾節點指向none,當未到達尾部時

while cur != none:

count += 1

# 將cur後移乙個節點

cur = cur.next

return count

def tr**el(self):

"""遍歷鍊錶"""

cur = self.__head

while cur != none:

print(cur.item,end = ' ')

cur = cur.next

print("")

頭部新增元素

def add(self, item):

"""頭部新增元素"""

# 先建立乙個儲存item值的節點

node = node(item)

# 將新節點的鏈結域next指向頭節點,即_head指向的位置

node.next = self.__head

# 將鍊錶的頭_head指向新節點

self.__head = nod

尾部新增元素

def append(self, item):

"""尾部新增元素"""

node = node(item)

# 先判斷鍊錶是否為空,若是空鍊錶,則將_head指向新節點

if self.is_empty():

self.__head = node

# 若不為空,則找到尾部,將尾節點的next指向新節點

else:

cur = self.__head

while cur.next != none:

cur = cur.next

cur.next = node

指定位置新增元素

def insert(self, pos, item):

"""指定位置新增元素"""

# 若指定位置pos為第乙個元素之前,則執行頭部插入

if pos <= 0:

self.add(item)

# 若指定位置超過鍊錶尾部,則執行尾部插入

epf pos > (self.length()-1):

self.append(item)

# 找到指定位置

else:

node = node(item)

count = 0

# pre用來指向指定位置pos的前乙個位置pos-1,初始從頭節點開始移動到指定位置

pre = self.__head

while count < (pos-1):

count += 1

pre = pre.next

# 先將新節點node的next指向插入位置的節點

node.next = pre.next

# 將插入位置的前乙個節點的next指向新節點

pre.next = node

刪除節點

def remove(self,item):

"""刪除節點"""

cur = self.__head

pre = none

while cur != none:

# 找到了指定元素

if cur.item == item:

# 如果第乙個就是刪除的節點

if not pre:

# 將頭指標指向頭節點的後乙個節點

self.__head = cur.next

else:

# 將刪除位置前乙個節點的next指向刪除位置的後乙個節點

pre.next = cur.next

break

else:

# 繼續按鍊錶後移節點

pre = cur

cur = cur.nextwww.cppcns.com

查詢節點是否存在

def search(self,item):

"""鍊錶查詢節點是否存在,並返回true或者false"""

cur = self.__head

while cur != none:

if cur.item == item:

return true

程式設計客棧   cur = cur.next

return false

本文標題: python資料結構鍊錶之單向鍊錶(例項講解)

本文位址:

資料結構之單向鍊錶

結構體 指標 更強大的資料結構 分類 1 頭指標式鍊錶 不實用很麻煩 2 頭結點式鍊錶 常用 節點 typedef int data 常用操作 1建立 2摧毀3增加 4刪除5查詢 6修改7逆序 ifndef linklist h define linklist h typedef enum bool...

資料結構之單向迴圈鍊錶

基於單向鍊錶 將最後乙個節點 指向 頭結點 ifndef cirlinklist h define cirlinklist h typedef enum bool typedef int data typedef struct node node typedef struct list list 建...

資料結構 單向鍊錶

鍊錶結構的資料格式儲存 include stdafx.h 把這行放在最開始。include includeusing namespace std typedef struct data typedef struct node 這裡與上面的不同是多了node,注意如果沒有這個node,下面的struc...