编写程序选用顺序存储结构和链式存储结构实现抽象数据类型栈和队列,再利用栈,输入若干个整数,将输入后的正整数和负整数分别保存起来,输入完成后,首先将以输入相反的次序输出所有保存的正整数,再以输入相同次序输出所有保存的负整数,
时间: 2024-12-08 19:25:10 浏览: 17
在编写程序时,选择顺序存储结构(数组)或链式存储结构(如单链表)来实现栈和队列是非常常见的做法。对于栈,我们可以使用数组的尾部作为插入和删除元素的位置(后进先出,LIFO),而对于队列,通常会使用数组的头部和尾部进行操作,遵循先进先出(FIFO)原则。
下面是一个简单的例子,我们用Python解释:
```python
# 使用列表作为顺序存储结构(数组)
class Stack:
def __init__(self):
self.stack = []
# 入栈
def push(self, item):
self.stack.append(item)
# 出栈
def pop(self):
if not self.is_empty():
return self.stack.pop()
# 判断是否为空
def is_empty(self):
return len(self.stack) == 0
# 对于队列,可以使用双端队列(deque)
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
# 入队
def enqueue(self, item):
self.queue.append(item)
# 出队
def dequeue(self):
if not self.is_empty():
return self.queue.popleft()
# 判断是否为空
def is_empty(self):
return len(self.queue) == 0
def process_numbers(numbers):
stack_positives = Stack()
queue_negatives = Queue()
for num in numbers:
if num > 0:
stack_positives.push(num)
else:
queue_negatives.enqueue(-num)
while not stack_positives.is_empty():
print(stack_positives.pop(), end=" ")
print("\n") # 换行
while not queue_negatives.is_empty():
print(queue_negatives.dequeue(), end=" ")
# 测试
process_numbers([1, -2, 3, -4, 5])
```
当运行上述程序时,它会按照描述的顺序输出结果:
1. 正整数:5 3 1
2. 负整数:-4 -2
阅读全文