21xrx.com
2024-11-05 16:31:16 Tuesday
登录
文章检索 我的文章 写文章
C++顺序栈的实现代码
2023-07-02 11:21:03 深夜i     --     --
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。这是因为我们需要对栈顶指针和栈顶元素进行修改,如果使用值类型的参数则修改无法传递到主函数中。

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

  
  

评论区

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