"""
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 關於結構體的運算子,成員運算子.優先順序大於指標運算子 有參巨集的乙個使用經驗 有參巨集是當...