21xrx.com
2025-03-30 22:00:51 Sunday
文章检索 我的文章 写文章
C++顺序栈的实现代码
2023-07-02 11:21:03 深夜i     3     0
C++ 顺序栈 实现代码

顺序栈是一种基于数组实现的栈,通过数组的下标来确定栈顶位置。在C++中,可以使用数组和指针实现顺序栈。下面是C++顺序栈的实现代码。

#include<iostream>
using namespace std;
#define MAXSIZE 100 // 定义最大长度
typedef struct{
  int data[MAXSIZE]; // 存储元素的数组
  int top; // 栈顶指针
}SqStack;
// 初始化
void InitStack(SqStack &s)top指针为-1
// 判断栈是否为空
bool IsEmpty(SqStack s){
  if(s.top == -1)
    return true;
  else
    return false;
}
// 判断栈是否已满
bool IsFull(SqStack s){
  if(s.top == MAXSIZE-1)
    return true;
  else
    return false;
}
// 进栈操作
bool Push(SqStack &s, int x){
  if(IsFull(s)) // 栈已满
  s.top++; // 栈顶指针加1
  s.data[s.top] = x; // 将元素x压入栈顶
  return true;
}
// 出栈操作
bool Pop(SqStack &s, int &x){
  if(IsEmpty(s)) // 栈为空
  x = s.data[s.top]; // 取出栈顶元素
  s.top--; // 栈顶指针减1
  return true;
}
// 获取栈顶元素
bool Top(SqStack s, int &x){
  if(IsEmpty(s))返回false
    return false;
  
  x = s.data[s.top]; // 取出栈顶元素
  return true;
}
int main(){
  SqStack s;
  InitStack(s); // 初始化栈
  int x;
  Push(s, 1);
  Push(s, 2);
  Push(s, 3);
  Pop(s, x);
  Top(s, x);
  cout<<"栈顶元素为:"<<x<<endl;
  return 0;
}

在这段代码中,我们使用了一个结构体来表示顺序栈,其中包含了存储元素的数组和栈顶指针top。我们通过初始化top为-1来表示空栈。在进栈操作Push中,我们首先判断栈是否已满,如果未满则将元素x压入栈顶,同时将top指针加1。在出栈操作Pop中,我们首先判断栈是否为空,如果非空则将栈顶元素取出到x中,同时将top指针减1。在获取栈顶元素操作Top中,我们也先判断栈是否为空,如果非空则将栈顶元素取出到x中。

需要注意的是,我们在进栈和出栈操作中,使用的是引用类型的参数SqStack &s和int &x。这是因为我们需要对栈顶指针和栈顶元素进行修改,如果使用值类型的参数则修改无法传递到主函数中。

顺序栈的实现代码简单明了,但需要注意栈的空栈和满栈的判断,以及参数类型的使用。在实际编程中,我们还需注意各种操作和异常情况的处理。

  
  

评论区

请求出错了