7-10 有关堆栈操作 Python
创始人
2024-01-20 18:00:33
0

请实现一个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#栈中元素个数初始化为0self._current = 0def push(self, v):if self._current < self._size:for i in v:self._content.append(i)self._current = self._current+1else:print('Stack Full!')def pop(self):if self._content:self._current = self._current-1return self._content.pop(-1)else:print('Stack is empty!')def empty(self):self._content = []self._current = 0def isEmpty(self):return not self._contentdef maxlen(self):if sta.Size() < 10:self._size = 10else:self._size = sta.Size()return self._sizedef 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 = 0while flag == 0:num = input()if ' ' in str(num):lostr = num.split()if lostr[0] == '1':sta = Stack()sta.push(lostr[1:])flag = 1elif lostr[0] == '2':print("data error")else:breakelse:num = int(num)if num == 1:Stack.empty()flag = 1elif 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:breakwhile 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:breakelse: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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...