21xrx.com
2024-09-20 01:05:03 Friday
登录
文章检索 我的文章 写文章
C++顺序栈完整代码
2023-07-04 23:43:03 深夜i     --     --
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++来快速简便地实现顺序栈数据结构,并可以进行入栈、出栈、获取栈顶元素等操作。

  
  

评论区

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