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

使用ordereddict实现Python中的堆栈数据结构

发布时间:2023-12-28 05:54:56

在Python中,可以使用collections模块中的OrderedDict来实现堆栈(stack)数据结构。OrderedDict是一个有序字典,它可以按照插入的顺序来保存键值对。这使得它非常适合用于实现堆栈的操作。

下面是一个使用OrderedDict实现堆栈数据结构的示例代码:

from collections import OrderedDict

class Stack:
    def __init__(self):
        self.stack = OrderedDict()

    def push(self, item):
        self.stack[len(self.stack)] = item

    def pop(self):
        if len(self.stack) == 0:
            raise IndexError("pop from empty stack")
        return self.stack.popitem(last=True)[1]

    def peek(self):
        if len(self.stack) == 0:
            raise IndexError("peek from empty stack")
        return list(self.stack.values())[-1]

    def is_empty(self):
        return len(self.stack) == 0

    def size(self):
        return len(self.stack)

在上面的代码中,我们定义了一个名为Stack的类,并在__init__方法中初始化一个空的OrderedDict作为堆栈。push方法用于将元素添加到堆栈的顶部,pop方法用于从堆栈中移除并返回顶部的元素,peek方法用于返回堆栈顶部的元素(不移除),is_empty方法用于检查堆栈是否为空,size方法用于返回堆栈的大小。

下面是使用这个堆栈数据结构的一个简单示例:

stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)

print(stack.peek())  # 输出: 3

print(stack.pop())  # 输出: 3
print(stack.pop())  # 输出: 2

print(stack.is_empty())  # 输出: False

print(stack.size())  # 输出: 1

在这个例子中,我们首先创建了一个空的堆栈。然后,我们使用push方法将3个元素依次添加到堆栈的顶部。接着,我们使用peek方法查看了堆栈顶部的元素,然后使用pop方法从堆栈中移除并返回了两个元素。最后,我们通过is_empty方法检查了堆栈是否为空,并通过size方法获取了堆栈的大小。

这就是使用OrderedDict实现堆栈数据结构的完整示例。通过使用OrderedDict,我们可以轻松地实现堆栈的操作,并保持元素的插入顺序。