3)设从键盘输入一整数的序列: a1, a2, a3, …, an,试编写算法实现:用栈结构存储\n输入的整数,当 ai≠ -1 时,将 ai 进栈;当 ai=-1 时,输出栈顶整数并出栈。算法应对异常情\n况(入栈满等)给出相应的信息。
时间: 2023-05-28 08:04:46 浏览: 272
从键盘输入一个三位整数,逆序输出。如输入123,输出321。
算法如下:
1. 初始化一个空栈,设其最大容量为MAX_SIZE。
2. 从键盘输入整数序列,直到输入-1为止:
- 如果当前输入的整数不是-1,判断栈是否已满:
- 如果栈未满,将该整数压入栈中;
- 如果栈已满,输出“入栈失败,栈已满”并结束程序。
- 如果当前输入的整数是-1,判断栈是否为空:
- 如果栈不为空,输出栈顶整数并弹出栈顶元素;
- 如果栈为空,输出“出栈失败,栈已空”并结束程序。
3. 输入完成后,如果栈不为空,依次输出栈中所有元素并弹出栈顶。
算法实现如下(使用Python语言):
MAX_SIZE = 10 # 栈的最大容量
stack = [] # 初始化一个空栈
# 从键盘输入整数序列
while True:
num = int(input("请输入一个整数(输入-1结束):"))
if num != -1:
if len(stack) < MAX_SIZE:
stack.append(num) # 将该整数压入栈中
else:
print("入栈失败,栈已满")
break
else:
if len(stack) > 0:
print("出栈元素为:", stack[-1]) # 输出栈顶元素
stack.pop() # 弹出栈顶元素
else:
print("出栈失败,栈已空")
break
# 输出栈中所有元素
if len(stack) > 0:
print("栈中剩余元素为:", end="")
while len(stack) > 0:
print(stack[-1], end=" ")
stack.pop() # 弹出栈顶元素
else:
print("栈已空")
阅读全文