best94 2022-04-06 17:04 采纳率: 40%
浏览 15
已结题

Python栈哪块有问题,请指正。

def init(self, max):
self.maxstacksize = 10
self.s = [None for x in range(0, self.maxstacksize)]
self.top = -1

def isemptystack(self):
if self.top == -1:
iTop = True
else:
iTop = False
return iTop

def pushstack(self, x):
if self.top < self.maxstacksize-1:
self.top = self.top+1
self.s[self.top] = x
else:
print("栈满")
return

def popstack(self):
if self.isemptystack():
print("栈为空")
return
else:
itop = self.top
self.top = self.yop-1
return self.s[itop]

def gettopstack(self):
if self.isemptystack():
print("栈为空")
return
else:
return self.s[self.top]

def stacktraverse(self):
if self.isemptystack(self):
print("栈为空")
return
else:
for i in range(0, self.top+1):
print(self.s[i], end=' ')

def createstackbyinput(self):
data = input("请输入元素(继续输入请按回车键,结束请输入‘#’):")
while data != '#':
self.pushstack(data)
data = input("请输入元素: ")

ss='SequenceStack'()
ss.createstackbyinput()
print("栈内的元素为: ", end=' ')
ss.stacktraverse()

  • 写回答

1条回答 默认 最新

  • ash062 2022-04-06 19:45
    关注

    几个比较明显的问题:
    1、未写类名,class SequenceStack:
    2、初始化给的max参数未用到
    3、popstack的else分块中self.top = self.yop - 1 → self.top = self.top - 1
    4、stacktraverse的if判断条件self.isemptystack(self)多传入了self参数
    5、createstackbyinput中第一个input语句的#两侧中文引号问题
    6、调用部分ss = 'SequenceStack'()不应加引号

    class SequenceStack:    
        def __init__(self, max = 10):
            self.maxstacksize = max
            self.s = [None for x in range(0, self.maxstacksize)]
            self.top = -1
    
        def isemptystack(self):
            if self.top == -1:
                iTop = True
            else:
                iTop = False
            return iTop
    
        def pushstack(self, x):
            if self.top < self.maxstacksize - 1:
                self.top = self.top + 1
                self.s[self.top] = x
            else:
                print("栈满")
                return
    
        def popstack(self):
            if self.isemptystack():
                print("栈为空")
                return
            else:
                itop = self.top
                self.top = self.top - 1
            return self.s[itop]
    
        def gettopstack(self):
            if self.isemptystack():
                print("栈为空")
                return
            else:
                return self.s[self.top]
    
        def stacktraverse(self):
            if self.isemptystack():
                print("栈为空")
                return
            else:
                for i in range(0, self.top + 1):
                    print(self.s[i], end=' ')
    
        def createstackbyinput(self):
            data = input("请输入元素(继续输入请按回车键,结束请输入'#'):")
            while data != '#':
                self.pushstack(data)
                data = input("请输入元素: ")
    
    if __name__ == '__main__':
        ss = SequenceStack()
        ss.createstackbyinput()
        print("栈内的元素为: ", end=' ')
        ss.stacktraverse()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!