21xrx.com
2024-11-05 14:37:12 Tuesday
登录
文章检索 我的文章 写文章
C++顺序栈类实现代码
2023-06-24 01:04:25 深夜i     --     --
C++ 顺序栈 实现 代码

在数据结构中,栈是一种基本的数据结构,它的特点是后进先出。C++中可以使用数组来实现栈,这种实现方式叫做顺序栈。下面是一份C++顺序栈类实现代码,可以供大家参考。

首先,我们需要定义一个栈类,代码如下:


class Stack {

  private:

    int* values; //定义一个指向栈元素的指针

    int top;   //栈顶元素位置

    int maxSize; //栈的容量

  public:

    Stack(int size);  //构造函数

    ~Stack();     //析构函数

    bool isEmpty();  //判断栈是否为空

    bool isFull();   //判断栈是否已满

    bool push(int x); //在栈顶插入元素

    int pop();     //弹出栈顶元素

};

然后,我们需要在类的外部实现这些函数,代码如下:


//构造函数

Stack::Stack(int size) {

  maxSize = size;      //设置栈的容量

  values = new int[maxSize]; //分配堆内存

  top = -1;         //初始化栈顶位置

}

//析构函数

Stack::~Stack() {

  delete[] values; //释放堆内存

}

//判断栈是否为空

bool Stack::isEmpty() {

  return top == -1;

}

//判断栈是否已满

bool Stack::isFull() {

  return top == maxSize - 1;

}

//在栈顶插入元素

bool Stack::push(int x) {

  if (isFull()) return false; //如果栈已满,插入失败

  values[++top] = x;     //栈顶指针上移一位,插入元素

  return true;

}

//弹出栈顶元素

int Stack::pop() {

  if (isEmpty()) return -1; //如果栈为空,弹出失败

  return values[top--];   //栈顶指针下移一位,弹出元素

}

最后,我们可以在主函数中使用这个顺序栈,代码如下:


int main() {

  Stack s(10); //创建一个容量为10的栈

  for (int i = 0; i < 10; ++i) {

    s.push(i); //依次插入0~9

  }

  while (!s.isEmpty()) {

    cout << s.pop() << " "; //依次弹出所有元素

  }

  cout << endl;

  return 0;

}

上面的代码中,我们创建了一个容量为10的栈,并依次插入了0~9这十个元素。然后使用while循环依次弹出所有元素,并将它们输出到屏幕上。

总结:

通过这篇文章,我们学习了C++中如何实现一个顺序栈类。顺序栈是栈的一种实现方式,通过数组来存储栈中的元素。需要注意的是,在使用栈的过程中,需要时刻判断栈是否为空或已满,防止数组越界或栈溢出。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复