当前位置:首页少儿编程 > 正文

什么是栈?编写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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 网站建设
  • r软件开发
  • 最新推荐

    热门点击