鍊錶棧與佇列的實現

2021-09-28 23:26:00 字數 1714 閱讀 5379

"""

link queue

"""from squeue import queueerror

class node():

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

self.val = val

self.next =next

class lqueue():

def __init__(self):

self.rear = node(none)

self.front = self.rear

def is_empty(self):

return self.front == self.rear

def enqueue(self,elem):

self.rear.next = node(elem)

self.rear = self.rear.next

def dequeue(self):

if self.front == self.rear:

raise queueerror("queue is none")

self.front = self.front.next

return self.front.val

if __name__ == "__main__":

lq = lqueue()

print(lq.is_empty())

lq.enqueue(10)

lq.enqueue(20)

lq.enqueue(30)

while not lq.is_empty():

print(lq.dequeue())

class stack(object):

def __init__(self):

self.top = node(none) #這裡需要直接讓棧頂成為空節點

def push(self, val): #而不是none,原因見下

node = node(val)

node.next = self.top

self.top = node

def pop(self):

pops = self.top

self.top = self.top.next

return pops.val

def showstack(self):

p = self.top

while p.next is not none: #如果棧頂不是節點而是空的話,

print(p.val) #在棧底的上個節點next為空

p = p.next #使得無法全部列印出棧中的元素!

sstack = stack()

sstack.push(1)

sstack.push(2)

sstack.push(3)

sstack.push(4)

sstack.push(5)

sstack.pop()

sstack.showstack()

測試:符合後進先出,實現壓棧彈棧工作。43

21process finished with exit code 0

佇列 棧與鍊錶

佇列,顧名思義,就像排隊一樣,我們只能在隊首刪除,在隊尾增加。佇列是一種先進先出 fifo 的資料結構。參考 佇列的解析與c語言實現 棧,可以理解為乙個儲物的地方,且只有乙個出口,先放進去的東西最後才能拿出來 因為被後面放進去的東西擋住了 棧作為一種 資料結構 是一種 只能在一端進行插入和刪除操作 ...

佇列 棧與鍊錶

一 佇列 佇列,顧名思義,就像排隊一樣,我們只能在隊首刪除,在隊尾增加。佇列是一種先進先出 fifo 的資料結構。參考 佇列的解析與c語言實現三 鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組...

雙向鍊錶 佇列與棧的C C 實現

0 基礎 在elf檔案中,對於一些常量,如果是字串常量,其被儲存在唯讀資料段.rodata中,而對整型 浮點型常量等其則被硬編碼到 段.text中。故下段 是行得通的。int fun char id 123 關於結構體的運算子,成員運算子.優先順序大於指標運算子 有參巨集的乙個使用經驗 有參巨集是當...