数据结构与算法之——栈、队列-python代码实现
数据结构之——栈、队列-python代码实现
1、栈
1.1 原理
太简单,略
1.2 python实现栈
"""python 列表实现栈"""
class Stack(object):
def __init__(self):
self.stack_list = []
"""入栈 压入栈底 即把新的元素加到列表尾部"""
def push(self, item):
self.stack_list.append(item)
"""出栈 后进先出 即把列表的最后一个元素移除 -1在python一般用于索引最后一位"""
def pop(self):
if self.is_empty_stock():
print("栈为空,无法再进行出栈操作!")
raise "栈为空,无法再进行出栈操作!"
else:
_temp_top_value = self.stack_list.pop()
return _temp_top_value
"""获取栈顶的元素"""
def get_top(self):
if self.is_empty_stock():
print("栈为空,无法获取栈顶元素!")
raise "栈为空,无法获取栈顶元素!"
else:
return self.stack_list[-1]
"""判断栈是否空,即判断列表是不是空列表"""
def is_empty_stock(self):
return self.stack_list == []
"""栈的元素个数 即列表的长度"""
def size(self):
return len(self.stack_list)
if __name__ == "__main__":
stock1 = Stack()
print("——————初始情况——————")
print(f"判断空栈:{stock1.is_empty_stock()}")
print(f"栈的元素数量:{stock1.size()}")
# print(f"当前栈顶元素:{stock1.peek()}")
print(f"当前栈的总情况:{stock1.stack_list}")
# 入栈
print("——————入栈——————")
stock1.push(1)
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.push(0)
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.push(0)
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.push(8)
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.push(6)
print(f"当前栈的总情况:{stock1.stack_list}")
print(f"判断空栈:{stock1.is_empty_stock()}")
print(f"栈的元素数量:{stock1.size()}")
print(f"当前栈顶元素:{stock1.get_top()}")
# 出栈
print("——————出栈——————")
stock1.pop()
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.pop()
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.pop()
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.pop()
print(f"当前栈的总情况:{stock1.stack_list}")
stock1.pop()
print(f"当前栈的总情况:{stock1.stack_list}")
# stock1.pop()
# print(f"当前栈的总情况:{stock1.stack_list}")
2、队列
2.1 原理
太简单,略
2.2 python实现队列
"""python 列表实现队列"""
class Queue(object):
def __init__(self):
self.queue_list = []
"""入队 即把新的元素加到列表尾部"""
def enqueue(self, item):
self.queue_list.append(item)
"""出队 先进先出 即把列表的第一个元素移除"""
def dequeue(self):
if self.is_empty_queue():
print("队列为空,无法再进行出队操作!")
raise "队列为空,无法再进行出队操作!"
else:
_temp_head_value = self.queue_list.pop(0)
return _temp_head_value
"""读取队头元素"""
def get_head(self):
if self.is_empty_queue():
print("队列为空,无法获取队头元素!")
raise "队列为空,无法获取队头元素!"
else:
return self.queue_list[0]
"""判断队列是否空,即判断列表是不是空列表"""
def is_empty_queue(self):
return self.queue_list == []
"""队列的元素个数 即列表的长度"""
def size(self):
return len(self.queue_list)
if __name__ == "__main__":
queue = Queue()
print("——————初始情况——————")
print(f"判断空队列:{queue.is_empty_queue()}")
print(f"队列的元素数量:{queue.size()}")
print(f"当前队列的总情况:{queue.queue_list}")
# 入队
print("——————入队——————")
queue.enqueue(1)
print(f"当前队列的总情况:{queue.queue_list}")
queue.enqueue(0)
print(f"当前队列的总情况:{queue.queue_list}")
queue.enqueue(0)
print(f"当前队列的总情况:{queue.queue_list}")
queue.enqueue(8)
print(f"当前队列的总情况:{queue.queue_list}")
queue.enqueue(6)
print(f"当前队列的总情况:{queue.queue_list}")
print(f"判断空队列:{queue.is_empty_queue()}")
print(f"队列的元素数量:{queue.size()}")
# 出队
print("——————出队——————")
queue.dequeue()
print(f"当前队列的总情况:{queue.queue_list}")
queue.dequeue()
print(f"当前队列的总情况:{queue.queue_list}")
queue.dequeue()
print(f"当前队列的总情况:{queue.queue_list}")
queue.dequeue()
print(f"当前队列的总情况:{queue.queue_list}")
queue.dequeue()
print(f"当前队列的总情况:{queue.queue_list}")
本文来自博客园,作者:JaxonYe,转载请注明原文链接:https://www.cnblogs.com/yechangxin/articles/16391518.html
侵权必究