21xrx.com
2024-09-19 10:04:31 Thursday
登录
文章检索 我的文章 写文章
C++ 顺序栈实现
2023-07-12 14:54:54 深夜i     --     --
C++ 顺序栈 实现

C++ 顺序栈是一种基于数组实现的数据结构,它是一种线性结构,具有“后进先出”的特性。顺序栈实现简单,效率高,在日常工作中被广泛应用。

1. 定义数据结构

在 C++ 中,定义一个顺序栈可以通过定义一个结构体来实现。结构体中需要包含两个重要的结构体成员,一个是存储数据的数组,另一个是表示栈顶指针的变量。

struct SeqStack

{

  int data[MaxSize]; //定义顺序栈的最多存储元素个数

  int top; //定义顺序栈的栈顶指针

};

2. 初始化

对于新创建的顺序栈,需要进行初始化操作。初始化操作包括给数组 data 中的所有元素赋初值,以及将栈顶指针 top 置为-1,表示当前顺序栈为空。

void InitStack(SeqStack &s) //初始化顺序栈

{

  for (int i = 0; i < MaxSize; i++)

    s.data[i] = 0;  //将数组初始化为0

  s.top = -1;  //栈顶指针下标初始化为-1

}

3. 判断是否为空

一个重要的操作是判断顺序栈是否为空。如果栈顶指针 top 的值为-1,则表示顺序栈为空。反之,则表示顺序栈非空。

bool IsEmpty(SeqStack &s) //判断顺序栈是否为空

{

  if (s.top == -1)

    return true;  //为空

  else

    return false; //非空

}

4. 进栈操作

当需要往顺序栈中添加元素时,就需要进行进栈操作。进栈操作实际上就是向数组 data 中添加元素,并将栈顶指针 top 增加1。

bool Push(SeqStack &s, int x) //进栈操作

{

  if (s.top == MaxSize - 1)

    return false;  //栈已满,不能进栈

  s.top++;    //栈顶指针增加1

  s.data[s.top] = x;  //将元素x放入栈顶

  return true;

}

5. 出栈操作

当需要从顺序栈中取出元素时,就需要进行出栈操作。出栈操作实际上就是将数组 data 中的顶端元素弹出,并将栈顶指针 top 减少1。

bool Pop(SeqStack &s, int &x) //出栈操作

{

  if (s.top == -1)

    return false;  //栈已空,不能出栈

  x = s.data[s.top];  //获取栈顶元素

  s.top--;    //栈顶指针减少1

  return true;

}

6. 获取栈顶元素

有时需要查看顺序栈中的栈顶元素,此时可以使用 Peek 操作。Peek 操作实际上就是返回数组 data 中的顶端元素。

bool Peek(SeqStack &s, int &x)  //获取栈顶元素

{

  if (s.top == -1)

    return false;  //栈为空,无栈顶元素

  x = s.data[s.top];  //返回栈顶元素

  return true;

}

以上就是 C++ 顺序栈实现的基本内容,它可以实现存储多个元素,并支持进栈、出栈、获取栈顶元素等操作。在实际编程中,可以根据需要进行相应的操作,以满足不同的需求。

  
  

评论区

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