python 實現無序鍊錶

2021-09-12 09:37:09 字數 1808 閱讀 1850

一、 鍊錶的概念

二、 python實現

1、定義乙個node類:

class node(object):

def __init__(self, val):

self.data = val

self.next = none

def get_data(self):

return self.data

def set_data(self, val):

self.data = val

def get_next(self):

return self.next

pass

def set_next(self, val):

self.next = val

pass

2、鍊錶的每個元素都是node物件,實現如下:

class nonesortlist(object):

def __init__(self):

# 初始化鍊錶

self.head = none

def empty(self):

# 判斷鍊錶是否為空

return self.head is none

def add(self, item):

# 鍊錶新增元素

tmp = node(item)

tmp.set_next(self.head)

self.head = tmp

pass

def size(self):

# 獲取鍊錶大小

current = self.head

length = 0

while current is not none:

length += 1

current = current.get_next()

return length

def search(self, item):

# 鍊錶中查詢元素

current = self.head

while current is not none:

print(current.get_data())

if current.get_data() == item:

return true

else:

current = current.get_next()

return false

def remove(self, item):

# 刪除鍊錶中元素

current = self.head

pre = none

flag = false

while not flag:

if current.get_data() == item:

flag = true

else:

pre = current # pre節點下移為當前節點

current = current.get_next() # 當前節點下移為下乙個節點

if pre is none: # 如果刪除的是head, head節點往後移動

self.head = current.get_next()

else: # 如果刪除的是非head節點,刪除當前節點後,pre的下一節點為當前節點的下一節點

pre.setnext(current.getnext())

Python無序鍊錶 類的宣告

class node 這裡不用加括號,具體引數都在init函式裡,這也是和函式區別的一部分,函式的公升級和高階有序集合 def init self,val self.data val self.next none def getdata self return self.data def getne...

無序線性表合併(鍊錶)

分析 無序兩張表la,lb,需要遍歷lb查重再插入la尾 include include include include 包含exit標頭檔案 include include define ok 1 define error 0 define length a 5 define length b 3...

python實現從無序的鍊錶中刪除重複項

題目描述 給定乙個沒有排序的鍊錶,去掉其重複項,並保留原順序,例如鍊錶 1 3 1一 5一 5 7,去掉重複項後變為 l一 3一 5 7。分析與解答 順序刪除 主要思路為 通過雙重迴圈直接在鍊錶上進行刪除操作 外層迴圈用乙個指標從第乙個 結點開始遍歷整個鍊錶,然後內層迴圈用另外乙個指標遍歷其餘結點 ...