KFC-Crazy-Thursday
2 subscribers
1 photo
3 links
Download Telegram
Channel created
Forwarded from Deleted Account
<pre>
main(
)
</pre>
<pre>
main(
)
</pre>
class Stack:
def __init__(self, size=10):
# 初始化一个固定大小的列表作为栈,并设置栈顶指针为-1
self.stack = [None] * size
self.top = -1

def is_empty(self):
# 判断栈是否为空
return self.top == -1

def is_full(self):
# 判断栈是否已满
return self.top == len(self.stack) - 1

def push(self, item):
# 如果栈未满,将元素压入栈,否则打印溢出信息
if self.is_full():
print("Stack Overflow")
else:
self.top += 1
self.stack[self.top] = item

def pop(self):
# 如果栈非空,弹出栈顶元素并返回,否则打印下溢信息
if self.is_empty():
print("Stack Underflow")
else:
item = self.stack[self.top]
self.top -= 1
return item

def peek(self):
# 如果栈非空,返回栈顶元素,否则打印栈为空信息
if not self.is_empty():
return self.stack[self.top]
else:
print("Stack is empty")

def process_numbers():
# 创建一个栈对象
stack = Stack()
while True:
# 循环读取用户输入的整数
try:
num = int(input("Enter a number (-1 to end): "))
# 将非-1的整数压入栈
if num != -1:
stack.push(num)
# 当输入为-1且栈非空时,弹出栈顶元素并打印
elif num == -1 and not stack.is_empty():
print("Popped and printed:", stack.pop())
# 当输入为-1且栈为空时,提示栈为空
else:
print("Stack is empty, nothing to pop.")
except ValueError:
# 捕获无效输入并提示
print("Invalid input. Please enter an integer.")

# 运行处理数字的函数
process_numbers()
def is_paired(expression):
# 创建一个空栈用于存储左括号
stack = []
# 定义括号映射关系
mapping = {")": "(", "}": "{", "]": "["}

# 遍历输入的表达式
for char in expression:
# 如果是左括号,压入栈
if char in mapping.values():
stack.append(char)
# 如果是右括号,检查栈顶的左括号是否与之匹配,不匹配或栈为空则返回False
elif char in mapping.keys():
if not stack or mapping[char] != stack.pop():
return False
# 如果栈为空,说明括号匹配成功
return not stack # 如果栈为空,括号匹配正确

# 获取用户输入的表达式
expression = input("Enter an arithmetic expression: ")
# 检查括号是否正确配对
if is_paired(expression):
print("The parentheses are correctly paired.")
else:
print("The parentheses are not correctly paired.")