#include <iostream>
// 栈的实现
class Stack {
private:
int *arr;
int top;
int capacity;
public:
Stack(int size = 10) {
capacity = size;
arr = new int[capacity];
top = -1;
}
~Stack() {
delete[] arr;
}
bool 已满() {
return top == capacity - 1;
}
bool 为空() {
return top == -1;
}
void 入栈(int x) {
if (已满()) {
std::cout << "栈已满!" << std::endl;
return;
}
arr[++top] = x;
}
int 出栈() {
if (为空()) {
std::cout << "栈为空!" << std::endl;
return -1;
}
return arr[top--];
}
int 查看栈顶() {
if (为空()) {
std::cout << "栈为空!" << std::endl;
return -1;
}
return arr[top];
}
};
// 队列的实现
class Queue {
private:
int *arr;
int front, rear;
int capacity;
public:
Queue(int size = 10) {
capacity = size;
arr = new int[capacity];
front = rear = -1;
}
~Queue() {
delete[] arr;
}
bool 已满() {
return (rear + 1) % capacity == front;
}
bool 为空() {
return front == -1;
}
void 入队(int x) {
if (已满()) {
std::cout << "队列已满!" << std::endl;
return;
}
if (为空()) {
front = rear = 0;
} else {
rear = (rear + 1) % capacity;
}
arr[rear] = x;
}
int 出队() {
if (为空()) {
std::cout << "队列为空!" << std::endl;
return -1;
}
int temp = arr[front];
if (front == rear) {
front = rear = -1;
} else {
front = (front + 1) % capacity;
}
return temp;
}
int 查看队头() {
if (为空()) {
std::cout << "队列为空!" << std::endl;
return -1;
}
return arr[front];
}
};
int main() {
Stack s(5);
s.入栈(1);
s.入栈(2);
s.入栈(3);
std::cout << "栈顶元素: " << s.查看栈顶() << std::endl;
s.出栈();
std::cout << "出栈后栈顶元素: " << s.查看栈顶() << std::endl;
Queue q(5);
q.入队(10);
q.入队(20);
q.入队(30);
std::cout << "队头元素: " << q.查看队头() << std::endl;
q.出队();
std::cout << "出队后队头元素: " << q.查看队头() << std::endl;
return 0;
}
学习C++的第六天!
于 2024-09-25 23:19:47 首次发布