單向隊(duì)列:隊(duì)列是只允許在一端進(jìn)行插入操作,在另外一段進(jìn)行刪除操作的線性表,隊(duì)列不允許在中間部位進(jìn)行操作车遂,先進(jìn)先出(First In First Out)
python代碼實(shí)現(xiàn)單向隊(duì)列如下:
# coding:utf-8
class Deque(object):
"""
隊(duì)列:先進(jìn)先出(FIFO)
"""
def __init__(self):
self._list = []
def put(self, item):
"""
添加一個(gè)元素到隊(duì)列
"""
self._list.append(item)
def get(self):
"""
從隊(duì)列取出一個(gè)元素
"""
return self._list.pop(0)
def is_empty(self):
"""
判斷隊(duì)列是否為空
"""
return not self._list
def size(self):
"""
返回隊(duì)列的大小
"""
return len(self._list)
if __name__ == '__main__':
s = Deque()
print(s.is_empty())
s.put(1)
s.put(2)
s.put(3)
print(s.size())
print(s.get())
print(s.get())
print(s.is_empty())
雙向隊(duì)列:雙向隊(duì)列中的元素可以從兩端彈出样刷,限定插入和刪除操作在表的兩端進(jìn)行颜屠。雙向隊(duì)列可以在隊(duì)列任意一端入隊(duì)和出隊(duì)腋粥,實(shí)際由左右兩個(gè)棧組成蚊荣。
python代碼實(shí)現(xiàn)雙向隊(duì)列如下:
# coding:utf-8
class Deque(object):
"""
雙向隊(duì)列:隊(duì)列兩邊都可以取放元素
實(shí)際由左右兩個(gè)棧組成
"""
def __init__(self):
self._list = []
def put_left(self, item):
"""
隊(duì)列左邊放一個(gè)元素
"""
self._list.insert(0, item)
def put_right(self, item):
"""
隊(duì)列右邊放一個(gè)元素
"""
self._list.append(item)
def get_left(self):
"""
從隊(duì)列左邊取出一個(gè)元素
"""
return self._list.pop(0)
def get_right(self):
"""
從隊(duì)列右邊取出一個(gè)元素
"""
return self._list.pop()
def is_empty(self):
"""
判斷隊(duì)列是否為空
"""
return not self._list
def size(self):
"""
返回隊(duì)列的大小
"""
return len(self._list)
if __name__ == '__main__':
s = Deque()
print(s.is_empty())
s.put_left(1)
s.put_left(2)
s.put_right(3)
s.put_right(4)
print(s.size())
print(s.get_left())
print(s.get_right())
print(s.is_empty())