python堆栈与队列_python语言的堆栈与队列类的实现
基于python語言的數(shù)據(jù)結(jié)構之堆棧與隊列的實現(xiàn)
# 堆棧的實現(xiàn)
# -*- coding: utf-8 -*-
"""
棧(stack), 是一種容器,可以存入數(shù)據(jù)元素,訪問元素,刪除元素
只允許在容器的一段存取數(shù)據(jù)
特點: 后進先出 Last in first out
"""
"""
借助list來實現(xiàn)堆棧
添加的方法; 壓棧(入棧)
彈棧(出棧)
Stack() 創(chuàng)建一個新的空棧
push(item) 添加一個新元素 item 到棧頂
pop() 彈出棧頂元素
peek() 返回棧頂元素
is_empty() 判斷棧是否為空
size() 返回棧元素的個數(shù)
"""
class Stack(object):
"""棧"""
def __init__(self):
self.__list = []
def push(self, item):
"""添加一個新元素item到棧頂"""
self.__list.append(item) # 尾部添加 ,時間復雜度o1
# self.__list.insert(0,item) 這樣從尾部添加的時間復雜度為O(n)
def pop(self):
"""彈出棧頂元素"""
return self.__list.pop()
def peek(self):
"""返回棧頂元素"""
if self.__list:
return self.__list[-1]
return None
def is_empty(self):
"""判斷棧是否為空"""
return self.__list == []
def size(self):
"""返回棧元素的個數(shù)"""
return len(self.__list)
if __name__ == '__main__':
s = Stack()
print(s.is_empty())
s.push(1)
s.push(3)
s.push(4)
print(s.pop())
print(s.pop())
print(s.pop())
# 隊列的實現(xiàn)
# -*- coding: utf-8 -*-
class Queue:
"""隊列"""
def __init__(self):
self.__list = []
def enqueue(self, item):
"""往隊列中添加一個元素"""
self.__list.append(item) # 時間復雜度o(1)
def dequeue(self):
"""從隊列頭部刪除一個元素"""
return self.__list.pop(0) # 時間復雜度 o(n)
def is_empty(self):
"""判斷是否為空"""
return self.__list == []
def size(self):
"""返回隊列大小"""
return len(self.__list)
if __name__ == '__main__':
s = Queue()
print(s.is_empty())
s.enqueue(1)
s.enqueue(3)
s.enqueue(4)
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
# 雙端隊列的實現(xiàn)
# -*- coding: utf-8 -*-
class Deque(object):
def __init__(self):
self.__list = []
def add_front(self, item):
"""往隊列頭部添加一個元素"""
self.__list.insert(0, item) # 時間復雜度o(1)
def add_rear(self, item):
"""往隊列尾部添加一個元素"""
self.__list.append(item) # 時間復雜度o(1)
def pop_rear(self):
"""從隊列尾部刪除一個元素"""
return self.__list.pop() # 時間復雜度 o(1)
def pop_front(self):
"""從隊列頭部刪除一個元素"""
return self.__list.pop(0) # 時間復雜度 o(n)
def is_empty(self):
"""判斷是否為空"""
return self.__list == []
def size(self):
"""返回隊列大小"""
return len(self.__list)
總結(jié)
以上是生活随笔為你收集整理的python堆栈与队列_python语言的堆栈与队列类的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 优化300例_PHP+MyS
- 下一篇: python下采样_python + o