什么是栈?编写c++指针的方式编写程序详细操作栈
作者:野牛程序员:2023-02-20 15:26:19少儿编程阅读 2846
栈(Stack)是一种线性数据结构,它具有先进后出(LIFO,Last In First Out)的特点,即最后进入栈的元素最先被取出。栈通常包含两个主要操作:压入(Push)和弹出(Pop),即将元素放入栈顶和从栈顶取出元素。除此之外,栈还有一些其他的操作,如判断栈是否为空、获取栈顶元素等。
下面是一个使用指针操作栈的C++代码示例:
#include <iostream>
#define MAXSIZE 10
using namespace std;
class Stack {
private:
int* stack; // 栈的底部指针
int top; // 栈顶指针
public:
Stack(); // 构造函数
~Stack(); // 析构函数
bool isEmpty(); // 判断栈是否为空
bool isFull(); // 判断栈是否已满
bool push(int); // 入栈操作
int pop(); // 出栈操作
};
Stack::Stack() {
stack = new int[MAXSIZE];
top = -1;
}
Stack::~Stack() {
delete[] stack;
}
bool Stack::isEmpty() {
return top == -1;
}
bool Stack::isFull() {
return top == MAXSIZE - 1;
}
bool Stack::push(int item) {
if (isFull()) {
cout << "栈已满,无法入栈" << endl;
return false;
}
top++;
stack[top] = item;
return true;
}
int Stack::pop() {
if (isEmpty()) {
cout << "栈已空,无法出栈" << endl;
return -1;
}
int item = stack[top];
top--;
return item;
}
int main() {
Stack s;
s.push(1);
s.push(2);
s.push(3);
cout << s.pop() << endl;
cout << s.pop() << endl;
cout << s.pop() << endl;
cout << s.pop() << endl;
return 0;
}这个示例代码中,我们创建了一个名为Stack的类来表示栈。该类中包含了栈的底部指针stack、栈顶指针top以及相关的操作函数。
在push函数中,我们首先检查栈是否已满,如果已满,则输出错误信息并返回false;否则,将要入栈的元素放入栈顶,并将栈顶指针上移一位。在pop函数中,我们首先检查栈是否为空,如果为空,则输出错误信息并返回-1;否则,从栈顶取出元素,并将栈顶指针下移一位。
在main函数中,我们创建了一个名为s的栈对象,并依次将元素1、2、3压入栈中,然后依次取出这些元素,并输出到控制台中。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C++冒泡排序结合代码详细说明
- 下一篇:什么是队列?c++代码演示
