21xrx.com
2025-03-24 08:36:30 Monday
文章检索 我的文章 写文章
C++实现顺序栈:基本操作及示例代码
2023-06-22 01:29:14 深夜i     10     0
C++ 顺序栈 基本操作 示例代码 实现

顺序栈是一种常见的数据结构,可以用来解决很多实际问题。C++可以通过数组实现顺序栈。以下是关于顺序栈的基本操作及示例代码。

1. 初始化

在初始化前需要定义一个结构体,用于存储栈中的元素和栈顶指针。

struct Stack{
  int size;    //定义栈的大小
  int top;    //定义栈顶指针
  int *data;   //定义栈中的元素
  Stack(int n):size(n),top(0) {data = new int[size]; } //构造函数
};

2. 元素入栈

元素入栈时,将新的元素压入栈顶。若栈已满,则无法入栈,否则将元素插入栈顶数组中,并将栈顶指针top加一。

void push(Stack &s,int x){
  //判断栈是否已满
  if(s.top<s.size){
    s.data[s.top]=x;
    s.top++;
  }
  else
    cout<<"Stack Full!"<<endl;
}

3. 元素出栈

元素出栈时,从栈顶开始取出元素。若栈为空,则无法出栈,否则将栈顶指针top减一,取出栈顶元素。

void pop(Stack &s){
  //判断栈是否为空
  if(s.top<=0)
    cout<<"Stack Empty!"<<endl;
  else{
    s.top--;
    cout<<"Pop:"<<s.data[s.top]<<endl;
  }
}

4. 获取栈顶元素

获取栈顶元素时,只需要返回栈顶指针所指向的数组元素。

int top(Stack &s){
  //判断栈是否为空
  if(s.top<=0)
    cout<<"Stack Empty!"<<endl;
    return -1;
  
  else
    return s.data[s.top-1];
}

5. 判断栈是否为空

栈是否为空可以通过判断栈顶指针的位置得出。

bool empty(Stack &s)
  return s.top<=0;

以下是一个完整的示例代码,实现了以上的基本操作。

#include<iostream>
using namespace std;
struct Stack{
  int size;    //定义栈的大小
  int top;    //定义栈顶指针
  int *data;   //定义栈中的元素
  Stack(int n):size(n),top(0) {data = new int[size]; } //构造函数
};
//元素入栈
void push(Stack &s,int x){
  //判断栈是否已满
  if(s.top<s.size){
    s.data[s.top]=x;
    s.top++;
  }
  else
    cout<<"Stack Full!"<<endl;
}
//元素出栈
void pop(Stack &s){
  //判断栈是否为空
  if(s.top<=0)
    cout<<"Stack Empty!"<<endl;
  else{
    s.top--;
    cout<<"Pop:"<<s.data[s.top]<<endl;
  }
}
//获取栈顶元素
int top(Stack &s){
  //判断栈是否为空
  if(s.top<=0)
    cout<<"Stack Empty!"<<endl;
    return -1;
  
  else
    return s.data[s.top-1];
}
//判断栈是否为空
bool empty(Stack &s)
  return s.top<=0;
int main()
{
  Stack s(5);   //初始化栈
  push(s,1);   //元素入栈
  push(s,2);
  push(s,3);
  cout<<top(s)<<endl;   //获取栈顶元素
  pop(s);     //元素出栈
  cout<<top(s)<<endl;
  pop(s);
  cout<<top(s)<<endl;
  pop(s);
  cout<<empty(s)<<endl;  //判断栈是否为空
  cout<<top(s)<<endl;
  return 0;
}

以上就是关于顺序栈的基本操作及示例代码。使用顺序栈能很好地优化程序。掌握这些操作后,可以更好地实现程序的逻辑,提高程序的效率。

  
  

评论区