生活随笔
收集整理的這篇文章主要介紹了
算法与数据结构 -- 栈与队列(四)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
棧與隊列定義了數據的操作
一、棧
棧是一種先入先出的數據結構。可以用順序表實現,也可以用鏈表實現
棧操作
判斷是否為空壓棧、入棧push出棧 pop返回棧頂元素 peek棧的元素個數
'''
用python中的列表實現棧
棧是后入先出
在這里,將列表的尾部看成活動的
入棧和出棧都在列表尾部實現
列表尾部也是棧頂
'''
class Stack():def __init__(self
):self
.__list
= []def is_empty(self
):'''判斷棧是否為空:return:'''return self
.__list
==[]def push(self
,item
):'''入棧.:param item:壓入元素:return:'''self
.__list
.append
(item
)def pop(self
):'''出棧:return: 列表彈出的棧頂元素'''if self
.is_empty
():print('棧已空')else:return self
.__list
.pop
()def peek(self
):'''讀取棧頂元素,不改變原列表:return: 棧頂元素'''return self
.__list
[-1]
二、隊列
用python中的列表實現隊列
隊列是先入先出
在這里,在列表的頭部出列,列表尾部入列.這里的定義的方向也可以反過來
隊列操作
棧的元素個數判斷是否為空入列出列列表長度
class Queue():def __init__(self
):self
.__list
= []def is_empty(self
):'''判斷棧是否為空:return:'''return self
.__list
==[]def en_queue(self
,item
):'''入列:param item::return:'''self
.__list
.append
(item
)def de_queue(self
):'''出列:return:列表頭部數據'''if self
.is_empty
():print('隊列已空')else:return self
.__list
.pop
(0)def size(self
):''':return:棧里面元素個數'''return len(self
.__list
)
三、雙向隊列
用python中的列表實現雙向隊列
雙向隊列兩端均可進列、出列
在這里,將列表的頭部看成隊列的頭部,列表尾看成隊列的尾部.這里的定義的方向也可以反過來
雙向隊列操作
判斷是否為空頭部入列尾部入列頭部出列尾部出列列表長度
class Queue():def __init__(self
):self
.__list
= []def is_empty(self
):'''判斷棧是否為空:return:'''return self
.__list
==[]def en_front(self
,item
):'''頭部入列:param item::return:'''self
.__list
.insert
(0,item
)def en_rear(self
,item
):'''尾部入列:param item::return:'''self
.__list
.append
(item
)def de_front(self
):'''頭部出列:return:列表頭部數據'''if self
.is_empty
():print('隊列已空')else:return self
.__list
.pop
(0)def de_rear(self
):'''尾部部出列:return:列表尾部數據'''if self
.is_empty
():print('隊列已空')else:return self
.__list
.pop
()def size(self
):''':return:棧里面元素個數'''return len(self
.__list
)
總結
以上是生活随笔為你收集整理的算法与数据结构 -- 栈与队列(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。