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 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题