使用Python实现简单的数据结构,如栈和队列
发布时间:2023-12-04 20:20:52
在Python中,我们可以使用列表(list)来实现栈和队列。栈是一种具有"后进先出"(Last In First Out, LIFO)特性的数据结构;而队列则是一种具有"先进先出"(First In First Out, FIFO)特性的数据结构。
下面是使用列表实现栈和队列的示例代码:
1. 栈的实现:
class Stack:
def __init__(self):
self.stack = [] # 使用列表来管理栈的元素
def push(self, item):
self.stack.append(item) # 入栈操作,将元素添加到栈顶
def pop(self):
if not self.is_empty():
return self.stack.pop() # 出栈操作,从栈顶删除元素
return None
def peek(self):
if not self.is_empty():
return self.stack[-1] # 返回栈顶元素
return None
def is_empty(self):
return len(self.stack) == 0 # 判断栈是否为空
def size(self):
return len(self.stack) # 返回栈的大小
# 使用栈
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop()) # 输出 3
print(stack.peek()) # 输出 2
print(stack.is_empty()) # 输出 False
print(stack.size()) # 输出 2
2. 队列的实现:
class Queue:
def __init__(self):
self.queue = [] # 使用列表来管理队列的元素
def enqueue(self, item):
self.queue.append(item) # 入队操作,将元素添加到队尾
def dequeue(self):
if not self.is_empty():
return self.queue.pop(0) # 出队操作,从队头删除元素
return None
def peek(self):
if not self.is_empty():
return self.queue[0] # 返回队头元素
return None
def is_empty(self):
return len(self.queue) == 0 # 判断队列是否为空
def size(self):
return len(self.queue) # 返回队列的大小
# 使用队列
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print(queue.dequeue()) # 输出 1
print(queue.peek()) # 输出 2
print(queue.is_empty()) # 输出 False
print(queue.size()) # 输出 2
在上述代码中,栈和队列都是使用列表来实现的。栈操作中,push()将元素添加到栈顶,pop()从栈顶删除元素,peek()返回栈顶元素,is_empty()判断栈是否为空,size()返回栈的大小。类似地,队列操作中,enqueue()将元素添加到队尾,dequeue()从队头删除元素,peek()返回队头元素,is_empty()判断队列是否为空,size()返回队列的大小。
这些示例展示了如何使用Python中的列表来实现栈和队列,并展示了它们的基本操作。你可以根据实际需求对这些数据结构进行扩展,实现更多功能。
