21xrx.com
2024-11-05 16:25:03 Tuesday
登录
文章检索 我的文章 写文章
C++实现顺序栈:基本操作及示例代码
2023-06-22 01:29:14 深夜i     --     --
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;

}

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

  
  

评论区

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