Python中的棧和隊列是常見的數(shù)據(jù)結(jié)構(gòu),它們都是線性結(jié)構(gòu)中比較基礎(chǔ)的一種,用于存儲和管理數(shù)據(jù)。
棧(Stack)是一種操作受限的線性表,其限制為只能在表的一端進(jìn)行插入和刪除操作,這一端被稱為棧頂。棧按照先進(jìn)后出(LIFO)的原則進(jìn)行操作,也就是最后加入的元素最先被刪除。
# Python實現(xiàn)棧 class Stack: def __init__(self): self.items = [] def is_empty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[-1] def size(self): return len(self.items) stack = Stack() stack.push(1) stack.push(2) stack.push(3) print(stack.pop()) # 3
隊列(Queue)也是一種操作受限的線性表,其限制為只能在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,這一端被稱為隊頭,另一端為隊尾。隊列按照先進(jìn)先出(FIFO)的原則進(jìn)行操作,也就是最先加入的元素最先被刪除。
# Python實現(xiàn)隊列 class Queue: def __init__(self): self.items = [] def is_empty(self): return self.items == [] def enqueue(self, item): # 入隊 self.items.insert(0, item) def dequeue(self): # 出隊 return self.items.pop() def size(self): return len(self.items) queue = Queue() queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) print(queue.dequeue()) # 1
棧和隊列雖然有區(qū)別,但其本質(zhì)都是一種數(shù)據(jù)結(jié)構(gòu),它們在程序設(shè)計和算法實現(xiàn)中發(fā)揮著重要的作用。在Python中我們可以通過使用列表等數(shù)據(jù)類型,靈活地實現(xiàn)這兩種數(shù)據(jù)結(jié)構(gòu)。