顺序队列与顺序栈的实现devC++
时间: 2024-10-23 16:04:31 浏览: 13
在Dev-C++中,顺序队列和顺序栈的实现通常基于数组来构造,因为它们都是线性数据结构。这里我们仅展示基本的创建和操作原理:
### 顺序栈的实现示例[^2]:
```cpp
#include<iostream>
using namespace std;
#define MAX_SIZE 100 // 栈的最大容量
class Stack {
private:
int top;
int data[MAX_SIZE];
public:
Stack() : top(-1) {} // 初始化栈顶为-1表示空栈
bool isEmpty() { return (top == -1); }
bool isFull() { return (top == MAX_SIZE - 1); }
void push(int val) {
if(isFull()) {
cout << "Stack overflow!\n";
return;
}
data[++top] = val; // 增加栈顶指针并入栈
}
int pop() {
if(isEmpty()) {
cout << "Stack underflow!\n";
return -1; // 返回错误代码
}
return data[top--]; // 减少栈顶指针并出栈
}
};
int main() {
Stack s;
s.push(1);
s.push(2);
cout << s.pop() << endl; // 输出:2
return 0;
}
```
### 顺序队列的实现示例[^1]:
```cpp
#include<iostream>
using namespace std;
#define MAX_SIZE 100 // 队列的最大容量
class Queue {
private:
int front, rear; // 前端和后端指针
int data[MAX_SIZE];
public:
Queue() : front(-1), rear(-1) {} // 初始化两端指针为-1表示空队列
bool isEmpty() { return (front == rear); }
bool isFull() { return ((rear + 1) % MAX_SIZE == front); } // 使用模运算避免数组越界
void enqueue(int val) {
if(isFull()) {
cout << "Queue overflow!\n";
return;
}
rear = (rear + 1) % MAX_SIZE; // 后进先出原则,更新后端
data[rear] = val;
}
int dequeue() {
if(isEmpty()) {
cout << "Queue underflow!\n";
return -1; // 返回错误代码
}
int temp = data[front];
front = (front + 1) % MAX_SIZE; // 更新前端
return temp;
}
};
int main() {
Queue q;
q.enqueue(1);
q.enqueue(2);
cout << q.dequeue() << endl; // 输出:1
return 0;
}
```
阅读全文