编写一个程序,实现依次将元素进栈,获取栈顶元素,出栈;对输入的任意一个非负十进制整数N,输出与它等值的十六进制数;
时间: 2024-09-27 11:17:21 浏览: 44
上海交大--数据结构-实验报告.pdf
编写一个简单的程序来实现这个功能涉及到两个部分:栈的操作以及数值转换。这里我会分别描述这两个部分的伪代码,然后给出Python的一个简单示例。
**部分一:栈操作**
我们可以使用列表作为简单的栈数据结构:
```python
stack = []
```
1. 入栈 (push):
```python
def push_stack(element):
stack.append(element)
```
2. 获取栈顶元素 (top):
```python
def get_top():
if not stack: # 判断是否为空
return None
else:
return stack[-1]
```
3. 出栈 (pop):
```python
def pop_stack():
if not stack:
return None
else:
return stack.pop()
```
**部分二:数值转换(十进制转十六进制)**
我们可以用内置函数 `hex()` 来完成这个任务:
```python
def decimal_to_hex(n):
return hex(n).split('x')[-1].upper() # 移除前缀 '0x' 并转换为大写
```
现在我们将这两部分结合起来,用户可以依次进行操作:
```python
def main():
num = int(input("请输入一个非负整数: "))
while True:
print("\n请选择操作:")
print("1. 入栈")
print("2. 获取栈顶")
print("3. 出栈")
print("4. 转换为十六进制并显示")
print("5. 结束")
choice = input("请输入您的选择(1-5): ")
if choice == "1":
element = int(input("请输入元素: "))
push_stack(element)
elif choice == "2":
top_element = get_top()
if top_element is not None:
print("当前栈顶元素: ", top_element)
else:
print("栈为空.")
elif choice == "3":
popped_element = pop_stack()
if popped_element is not None:
print("刚刚出栈的元素: ", popped_element)
else:
print("栈已空.")
elif choice == "4":
hex_value = decimal_to_hex(num)
print(f"十六进制表示: {hex_value}")
elif choice == "5":
break
else:
print("无效的选择,请重试.")
if __name__ == "__main__":
main()
```
阅读全文