栈和队列(python代码)
1.棧【Stack】:是只限定在表的一端進行數(shù)據(jù)插入和刪除的線性表
2.隊列【Queue 】:是在表的一端進行數(shù)據(jù)插入,在表的另一端進行數(shù)據(jù)的刪除的線性表
3.棧和隊列都是線性表:線性表只是一種線性結(jié)構(gòu),內(nèi)存中存儲數(shù)據(jù)和刪除數(shù)據(jù)的方式
4.棧和隊列的相同點和不同點
? ? (1)相同點:
? ? ? ? ? ? ? ①:棧和隊列都是線性表
? ? ? ? ? ? ? ②:?插入數(shù)據(jù)都是表尾進行的
? ? ? ? ? ? ? ③:?都可以通過順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)實現(xiàn)
? ? ? ? ? ? ? ④:?插入和刪除的時間復(fù)雜度和空間復(fù)雜度是一樣的
? ? (2)不同點:
? ? ? ? ? ? ?①:刪除數(shù)據(jù)的位置不同,棧在表尾刪除,隊列在表頭刪除
? ? ? ? ? ? ?②:?應(yīng)用場景不同:
? ? ? ? ? ? ? ? ? ? ? ?a.常用棧的場景:變量的定義、運算表達式、函數(shù)的調(diào)用、深度優(yōu)先遍歷等
? ? ? ? ? ? ? ? ? ? ? ?b.常見的隊列的應(yīng)用場景:計算機中各種資源的管理和分配,廣度優(yōu)先遍歷等
5. 棧的插入和刪除過程:
# 棧: 列表的底層維護了一個棧結(jié)構(gòu)stack = [] print(stack)# 入棧【向棧中存數(shù)據(jù)】 : append stack.append(1) print(stack) stack.append(2) print(stack) stack.append(3) print(stack) stack.append(4) print(stack)# 出棧【從棧中取數(shù)據(jù)】:pop stack.pop() print(stack) stack.pop() print(stack) stack.pop() print(stack) stack.pop() print(stack)""" 特點:先進后出,后進先出 """運行結(jié)果:
?5.隊列的插入和刪除的過程
# 隊列 import collections# 創(chuàng)建一個空隊列 queue = collections.deque() print(queue)# 入隊【向隊列中添加數(shù)據(jù)】:append queue.append(1) print(queue) queue.append(2) print(queue) queue.append(3) print(queue) queue.append(4) print(queue)# 出隊【向隊列中獲取數(shù)據(jù)】:popleft:表頭/ pop:表尾 queue.popleft() print(queue) queue.popleft() print(queue) queue.popleft() print(queue) queue.popleft() print(queue)""" 特點: 先進先出,后進后出 """運行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的栈和队列(python代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.Java中的常量以及常量的分类
- 下一篇: 6.Java中的变量(定义)和数据类型(