資料結構 Python實現單向鍊錶基礎功能

2021-09-11 06:25:29 字數 3853 閱讀 1320

鏈式儲存結構:不要求邏輯上相鄰的元素在物理位置上也相鄰,因此,在做插入或刪除操作時,不需移動大量元素,但同時無法隨機訪問。資料元素之間的邏輯關係是由結點中的指標指示的。

##################

# nicerwu #

# 2019.02.22 #

##################

class list:

headnode = none

def __init__(self, head = none):

self.headnode = head

def viewall(self):

# 遍歷鍊錶,順序返回乙個儲存鍊錶所存數值的列表

val =

p = self.headnode

while p != none:

p = p.nextnode

return val

def lookfor(self, val = -1):

# 查詢第乙個值為val的結點,若有則返回位置

p = self.headnode

cur = 1

while p:

if p.nodeval == val:

return cur

else:

p = p.nextnode

cur = cur + 1

return false

def getelem(self, index = -1):

# 查詢第index個結點的數值

if index == -1:

return false

else:

p = self.headnode

cur = 1

while p and cur < index:

p = p.nextnode

cur = cur + 1

if p == none:

return false

else:

return p.nodeval

def listinsert(self, index = -1, node = none):

# 在index位置前插入元素node

if index == -1 or node == none:

return false

else:

p = self.headnode

cur = 1

while p and cur < index - 1:

p = p.nextnode

cur = cur + 1

if p == none:

return false

else:

node.nextnode = p.nextnode

p.nextnode = node

return true

def delnode(self, index = -1):

# 刪除第index個結點

if index == -1:

return false

else:

p = self.headnode

cur = 1

while p and cur < index - 1:

p = p.nextnode

cur = cur + 1

if p == none:

return false

else:

p.nextnode = p.nextnode.nextnode

return true

def changeval(self, index = -1, newval = -1):

# 更改第index個結點的值為newval

if index == -1:

return false

else:

p = self.headnode

cur = 1

while p and cur < index:

p = p.nextnode

cur = cur + 1

if p == none:

return false

else:

p.nodeval = newval

return true

def dellist(self):

# 鍊錶置空

self.headnode = none

return true

class listnode:

nodeval = -1

nextnode = none

def __init__(self, val = -1, next = none):

self.nodeval = val

if next != none:

self.nextnode = next

head = listnode(1, listnode(2, listnode(3, listnode(4, listnode(5)))))

testlist = list(head)

print(testlist.viewall())

順序生成乙個儲存1,2,3,4,5的鍊錶並列印出來

head = listnode(1, listnode(2, listnode(3, listnode(4, listnode(5)))))

testlist = list(head)

print(testlist.viewall())

print(testlist.listinsert(3, listnode(7)))

print(testlist.viewall())

在第3個結點前增加乙個值為7的結點

將第三個結點的值改為6

刪除第3個結點

查詢第三個結點所儲存的值

php實現資料結構 單向鍊錶

什麼是單向鍊錶 鍊錶是以鏈式儲存資料的結構,其不需要連續的儲存空間,鍊錶中的資料以節點來表示,每個節點由元素 儲存資料 和指標 指向後繼節點 組成。單向鍊錶 也叫單鏈表 是鍊錶中最簡單的一種形式,每個節點只包含乙個元素和乙個指標。它有乙個表頭,並且除了最後乙個節點外,所有節點都有其後繼節點。它的儲存...

資料結構 單向鍊錶(java實現)

public class node 為節點追加節點 當前節點 node currentnode this while true 賦值當前節點 currentnode nextnode 把需要追回的節點追加為找到的節點的下乙個節點 currentnode.next node return this 刪...

資料結構 單向鍊錶的實現

單向鍊錶的實現 記錄 非常菜雞的開始 節點中定義節點時 成員變數要寫struct 因為沒寫報了一堆錯 老師節點裡的node都是變數型別,只有linknode內部是指標型別,內部使用指標,指標大小為4個位元組 可以分配記憶體很方便。注意teacher輸入的時候為位址 各種指標型別的轉換 main函式中...