【问题标题】:How to make a function that can set a max size in stack?如何制作一个可以在堆栈中设置最大大小的函数?
【发布时间】:2018-09-21 14:33:18
【问题描述】:

我在下面做了一个堆栈。

现在我想添加一个函数或方法,允许您指定堆栈的最大大小。

我需要更改或添加什么?

class MyStack:
    def __init__(self):
        self.myList = []
        self.top = -1
        self.size = 0


    def isEmpty(self):
        if (self.size > 0):
            return False
        else:
            return True

    def push(self, item):
        self.myList.append(item)
        self.size = self.size + 1
        self.top = self.top + 1

    def pop(self):
        if self.isEmpty():
            return None
        else:
            self.ret = self.myList.pop(self.top)
            self.size = self.top - 1
            self.top = self.top - 1
            return self.ret

    def peek(self):
        if self.isEmpty():
            return None
        else:
            return self.myList[self.top]

【问题讨论】:

  • 你已经有了isEmpty()的代码,只是添加了max_size的类似代码。

标签: python python-3.x stack


【解决方案1】:

更改初始化函数以适应最大大小

def __init__(self,maxsize):
    self.myList = []
    self.top = -1
    self.size = 0
    #ADDED
    self.max_size=maxsize

同时修改你的推送功能:

def push(self, item):
    #check if you are exceeding the limit
    if(len(self.myList)<self.max_size):
        self.myList.append(item)
        self.size = self.size + 1
        self.top = self.top + 1
    else:
        print("Stack full")

现在可以看出:

#Initialise with 3 as max size
new_stack=MyStack(3)

#push 3 elements
new_stack.push(1)
new_stack.push(2)
new_stack.push(3)
#check the top
print("Try to peek :",new_stack.peek())
#OUTPUT : 3

#Try to push another element
new_stack.push(4) #output : Stack full
#check top again
print("Try to peek :",new_stack.peek())
#OUTPUT : 3 (still old one)

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多