完成顺序栈和循环队列的基本操作,输入n个数据元素,分别入栈和入队列,然后出栈和出队列,输出这n个数据元素。
时间: 2024-05-12 18:18:46 浏览: 11
顺序栈基本操作:
```python
class SqStack:
def __init__(self, maxsize):
self.data = [None] * maxsize
self.top = -1
def is_empty(self):
return self.top == -1
def is_full(self):
return self.top == len(self.data) - 1
def push(self, item):
if self.is_full():
raise Exception("Stack is full")
self.top += 1
self.data[self.top] = item
def pop(self):
if self.is_empty():
raise Exception("Stack is empty")
item = self.data[self.top]
self.top -= 1
return item
```
循环队列基本操作:
```python
class CircularQueue:
def __init__(self, maxsize):
self.data = [None] * maxsize
self.front = 0
self.rear = 0
self.maxsize = maxsize
def is_empty(self):
return self.front == self.rear
def is_full(self):
return (self.rear + 1) % self.maxsize == self.front
def enqueue(self, item):
if self.is_full():
raise Exception("Queue is full")
self.data[self.rear] = item
self.rear = (self.rear + 1) % self.maxsize
def dequeue(self):
if self.is_empty():
raise Exception("Queue is empty")
item = self.data[self.front]
self.front = (self.front + 1) % self.maxsize
return item
```
输入n个数据元素,分别入栈和入队列:
```python
n = int(input("请输入元素个数:"))
stack = SqStack(n)
queue = CircularQueue(n)
print("请输入元素:")
for i in range(n):
item = int(input())
stack.push(item)
queue.enqueue(item)
```
然后出栈和出队列,输出这n个数据元素:
```python
print("栈中元素为:")
while not stack.is_empty():
print(stack.pop())
print("队列中元素为:")
while not queue.is_empty():
print(queue.dequeue())
```