21xrx.com
2025-03-28 04:20:24 Friday
文章检索 我的文章 写文章
C++顺序栈完整代码
2023-07-04 23:43:03 深夜i     8     0
C++ 顺序栈 完整代码

C++是一种广泛使用的编程语言,在许多软件和应用程序中都有大量应用。其中,栈是一种常用的数据结构,而顺序栈又是栈的一种基本形式。本文将为读者介绍C++顺序栈的完整代码实现。

首先,顺序栈是通过数组实现的栈数据结构。在C++中,我们可以用模板来实现顺序栈,这样就可以扩展栈中可以存储的数据类型。以下是顺序栈模板定义的代码片段:

template <typename T>
class SeqStack {
private:
  T* data;       // 栈空间
  int top_index;    // 栈顶位置
  int max_size;    // 栈空间最大容量
public:
  SeqStack(int size); // 构造函数
  ~SeqStack();     // 析构函数
  bool Empty();    // 判断栈是否为空
  bool Full();     // 判断栈是否已满
  bool Push(T& element);  // 入栈操作
  bool Pop(T& element);  // 出栈操作
  bool Top(T& element);  // 获取栈顶元素
};

其中,三个私有成员变量分别表示栈的空间、栈顶位置和最大容量;构造函数和析构函数用于初始化和销毁栈;Empty()、Full()、Push()、Pop()和Top()方法则用于栈基本操作的实现。

接下来,是SeqStack类的构造函数和析构函数的实现代码:

template <typename T>
SeqStack<T>::SeqStack(int size) {
  data = new T[size];
  top_index = -1;
  max_size = size;
}
template <typename T>
SeqStack<T>::~SeqStack() {
  delete[] data;
  data = nullptr;
  top_index = -1;
  max_size = 0;
}

其中,构造函数通过new运算符分配栈的存储空间,并将栈顶位置置为-1表示栈为空。而析构函数则通过delete[]运算符释放栈空间,并将栈顶位置、最大容量清零。

接下来,是SeqStack类其他函数的实现代码:

template <typename T>
bool SeqStack<T>::Empty() {
  return top_index == -1;
}
template <typename T>
bool SeqStack<T>::Full() {
  return top_index == max_size - 1;
}
template <typename T>
bool SeqStack<T>::Push(T& element) {
  if (Full()) {
    return false;
  }
  data[++top_index] = element;
  return true;
}
template <typename T>
bool SeqStack<T>::Pop(T& element) {
  if (Empty()) {
    return false;
  }
  element = data[top_index--];
  return true;
}
template <typename T>
bool SeqStack<T>::Top(T& element) {
  if (Empty()) {
    return false;
  }
  element = data[top_index];
  return true;
}

其中,Empty()和Full()函数分别判断栈是否为空和已满,返回bool值;Push()和Pop()函数则实现入栈和出栈操作,当栈满或空时返回false;Top()函数用于获取栈顶元素,若栈为空则返回false。

最后,这些函数实现的完整SeqStack模板代码如下:

template <typename T>
class SeqStack {
private:
  T* data;       // 栈空间
  int top_index;    // 栈顶位置
  int max_size;    // 栈空间最大容量
public:
  SeqStack(int size); // 构造函数
  ~SeqStack();     // 析构函数
  bool Empty();    // 判断栈是否为空
  bool Full();     // 判断栈是否已满
  bool Push(T& element);  // 入栈操作
  bool Pop(T& element);  // 出栈操作
  bool Top(T& element);  // 获取栈顶元素
};
template <typename T>
SeqStack<T>::SeqStack(int size) {
  data = new T[size];
  top_index = -1;
  max_size = size;
}
template <typename T>
SeqStack<T>::~SeqStack() {
  delete[] data;
  data = nullptr;
  top_index = -1;
  max_size = 0;
}
template <typename T>
bool SeqStack<T>::Empty() {
  return top_index == -1;
}
template <typename T>
bool SeqStack<T>::Full() {
  return top_index == max_size - 1;
}
template <typename T>
bool SeqStack<T>::Push(T& element) {
  if (Full()) {
    return false;
  }
  data[++top_index] = element;
  return true;
}
template <typename T>
bool SeqStack<T>::Pop(T& element) {
  if (Empty()) {
    return false;
  }
  element = data[top_index--];
  return true;
}
template <typename T>
bool SeqStack<T>::Top(T& element) {
  if (Empty()) {
    return false;
  }
  element = data[top_index];
  return true;
}

通过以上代码实现,我们可以用C++来快速简便地实现顺序栈数据结构,并可以进行入栈、出栈、获取栈顶元素等操作。

  
  

评论区

请求出错了