• 7-10 有关堆栈操作 Python


    请实现一个Stack类,实现堆栈初始化,进栈,出栈,显示堆栈数据,堆栈长度等.
    实现进栈方法 push(int x); 实现出栈方法 pop(); 实现求堆栈长度方法 size();实现显示堆栈数据方法:show()。

    输入格式:
    输入包含多个测试用例,每个测试用例均为数字,第一个数 表示对应的操作。

    是1 时,表示初始化一个堆栈对象,最大长度为10,1后面可带上用空格分隔的0-n个数,这些数据为初始化堆栈的数据(如果数据个数n大于10 ,则最大长度为n),其后 也可不带数据,表示初始化的是一个空堆栈。

    是2,表示进栈操作,即从堆栈顶部(尾部)将数据添加到堆栈,所以2 后面还要带一个数,两数之间用空格分隔,当没有第2个数时,显示 “data error”,当进栈操作没有建立堆栈对象时显示 “stack is not exist”.当进堆栈操作时,堆栈数据达到最大长度时,则显示“The stack is full”

    是3 : 表示出栈操作,即从堆栈顶部(尾部)将数据弹出并显示。当出栈操作没有建立堆栈对象时显示 “stack is not exist”.当出堆栈操作时,堆栈没有数据,则显示“The stack is Empty”

    是4:表示显示堆栈中所有元素,元素之间用空格分隔,最后元素后面没有空格。同样 当显示操作没有建立堆栈对象时显示 “stack is not exist”。

    是5 :表示显示堆栈的长度。同样 当显示长度操作没有建立堆栈对象时显示 “stack is not exist”。
    是其它数字,则退出

    输出格式:
    参考输入格式中说明。对应不同的功能输出不同。

    输入样例:
    在这里给出一组输入。例如:

    3
    2
    1 2 3 4 5
    5
    4
    3
    3
    2 56
    4
    0
    输出样例:
    在这里给出相应的输出。例如:

    stack is not exist
    data error
    4
    2 3 4 5
    5
    4
    2 3 56

    class Stack:
        def __init__(self, size = 10):
            #使用列表存放栈的元素
            self._content = []
            #初始栈大小
            self._size = size
            #栈中元素个数初始化为0
            self._current = 0
    
        def push(self, v):
            if self._current < self._size:
                for i in v:
                    self._content.append(i)
                self._current = self._current+1
            else:
                print('Stack Full!')
    
        def pop(self):
            if self._content:
                self._current = self._current-1
                return self._content.pop(-1)
            else:
                print('Stack is empty!')
    
        def empty(self):
            self._content = []
            self._current = 0
            
        def isEmpty(self):
            return not self._content
    
        def maxlen(self):
            if sta.Size() < 10:
                self._size = 10
            else:
                self._size = sta.Size()
            return self._size
    
        def Size(self):
            return len(self._content)
    
        def show(self):
            for i in range(len(self._content)):
                if i != len(self._content) - 1:
                    print(self._content[i], end=' ')
                else:
                    print(self._content[i])
    
    if __name__ == '__main__':
        flag = 0
        while flag == 0:
            num = input()
            if ' ' in str(num):
                lostr = num.split()
                if lostr[0] == '1':
                    sta = Stack()
                    sta.push(lostr[1:])
                    flag = 1
                elif lostr[0] == '2':
                    print("data error")
                else:
                    break
            else:
                num = int(num)
                if num == 1:
                    Stack.empty()
                    flag = 1
                elif num == 3:
                    print("stack is not exist")
                elif num == 2:
                    print("data error")
                elif num == 4:
                    print("stack is not exist")
                elif num == 5:
                    print("stack is not exist")
                else:
                    break
    
        while flag == 1:
            num = input()
            if ' ' in num:
                lostr = num.split()
                if lostr[0] == '2':
                    if sta.Size() < sta.maxlen():
                        sta.push(lostr[1:])
                    else:
                        print("The stack is full")
                else:
                    break
            else:
                if num == '2':
                    print("data error")
                elif num == '3':
                    print(sta.pop())
                elif num == '4':
                    if sta.isEmpty():
                        print("The stack is Empty")
                    else:
                        sta.show()
                elif num == '5':
                    print(sta.Size())
                else:
                    break
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
  • 相关阅读:
    趣谈网络协议_1
    基于机器视觉的移动消防机器人(三)--软件设计
    ButterKnife依赖注入框架源码解析
    JSP项目进度管理系统myeclipse开发sql数据库BS模式java编程网页结构
    JSR303和拦截器
    卷积神经网络(VGG-19)灵笼人物识别
    Postman —— 配置环境变量
    计算机视觉的应用15-图片旋转验证码的角度计算模型的应用,解决旋转图片矫正问题
    热血传奇购买宠物的脚本,有现成的给我一份。
    Python基础:【习题系列】多选题(一)
  • 原文地址:https://blog.csdn.net/m0_57723028/article/details/127815480