欢迎访问宙启技术站
智能推送

使用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中的列表来实现栈和队列,并展示了它们的基本操作。你可以根据实际需求对这些数据结构进行扩展,实现更多功能。