什么是栈?编写c++指针的方式编写程序详细操作栈
作者:野牛程序员:2023-02-20 15:26:19少儿编程阅读 2390
栈(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++代码演示