用C++[编写一个程序实现顺序栈的各种基本运算;实现队列的链式表示和实现]
时间: 2024-10-16 20:21:00 浏览: 26
在C++中,我们可以使用数组或动态存储来实现顺序栈和队列的基本操作。这里是一个简单的例子,我们将分别创建一个基于数组的顺序栈和一个链式的队列。
**顺序栈(ArrayStack)实现:**
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 100;
class ArrayStack {
private:
int top;
int data[MAX_SIZE];
public:
ArrayStack() : top(-1) {}
bool isEmpty() const { return top == -1; }
bool isFull() const { return top == MAX_SIZE - 1; }
void push(int val) {
if (isFull()) {
cout << "Stack Overflow" << endl;
return;
}
data[++top] = val;
}
int pop() {
if (isEmpty()) {
cout << "Stack Underflow" << endl;
return -1;
}
return data[top--];
}
int peek() const {
if (isEmpty()) {
cout << "No element on top" << endl;
return -1;
}
return data[top];
}
};
int main() {
ArrayStack s;
// ... 使用栈进行push, pop, peek等操作
}
```
**链式队列(LinkedListQueue)实现:**
```cpp
#include <iostream>
struct Node {
int data;
Node* next;
Node(int d): data(d), next(nullptr) {}
};
class LinkedListQueue {
private:
Node* front;
Node* rear;
public:
LinkedListQueue() : front(nullptr), rear(nullptr) {}
bool isEmpty() const { return front == nullptr; }
void enqueue(int val) {
Node* newNode = new Node(val);
if (isEmpty()) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
int dequeue() {
if (isEmpty()) {
cout << "Queue Underflow" << endl;
return -1;
}
int val = front->data;
Node* temp = front;
front = front->next;
delete temp;
if (front == nullptr)
rear = nullptr;
return val;
}
int front() const {
if (isEmpty()) {
cout << "Queue is empty" << endl;
return -1;
}
return front->data;
}
};
int main() {
LinkedListQueue q;
// ... 使用队列进行enqueue, dequeue, front等操作
}
```
阅读全文