21xrx.com
2025-03-26 15:05:07 Wednesday
文章检索 我的文章 写文章
C++ 栈的源代码
2023-07-02 06:00:29 深夜i     20     0
C++ 源代码

栈是计算机科学中非常常见的数据结构,被广泛用于程序的实现。C++语言也提供了另一种数据结构——栈结构,并且可以使用源代码来实现它。

下面是一个简单的栈类的C++源代码实现。它包括基本的功能,例如压入(Push)元素、弹出(Pop)元素、查看栈顶元素(Top)和判断是否为空(IsEmpty)等:

#include<iostream>
using namespace std;
const int MAXSIZE = 100; //定义栈中允许存储元素的最大个数
template <typename T>
class Stack
{
private:
  T m_array[MAXSIZE]; //使用数组来存储元素
  int m_top; //栈顶指针
public:
  Stack() : m_top(-1) {}
  ~Stack() {}
  // 判断栈是否为空
  bool isEmpty() const {
    return (m_top == -1);
  }
  // 元素入栈
  bool push(T value) {
    if (m_top == MAXSIZE - 1)
      return false;
    
    else {
      m_top++;
      m_array[m_top] = value;
      return true;
    }
  }
  // 元素出栈
  bool pop() {
    if (isEmpty())
      return false;
    
    else
      m_top--;
      return true;
    
  }
  // 获取栈顶元素
  T top() const {
    if (isEmpty())
      return NULL;
    
    else {
      return m_array[m_top];
    }
  }
  // 获取栈的长度
  int size() const {
    return m_top + 1;
  }
};

这段源代码首先定义了一个变量MAXSIZE,表示该栈中允许存储的最大元素个数。同时,使用了类的基本知识,私有变量用来存储元素和栈顶指针,公有函数用来对栈进行基本的操作。

使用这段源代码,开发者可以很方便地实现一个栈结构。例如,可以在主函数中声明一个整型栈,并依次将1、2、3、4、5入栈,并输出栈顶元素、栈的长度和将所有元素都出栈后栈是否为空:

int main()
{
  Stack<int> myStack;
  for (int i = 1; i <= 5; i++) {
    myStack.push(i);
  }
  
  cout << "top element: " << myStack.top() << endl;
  cout << "stack size: " << myStack.size() << endl;
  while (!myStack.isEmpty()) {
    myStack.pop();
  }
  
  if (myStack.isEmpty())
    cout << "Stack is empty." << endl;
  
  else
    cout << "Stack is not empty." << endl;
  
  return 0;
}

输出结果如下:

top element: 5
stack size: 5
Stack is empty.

这段程序中,首先通过for循环将1~5的数依次压入栈中,然后输出栈顶元素和栈的长度,接着将所有元素都出栈,最后判断栈是否为空。

以上就是一个简单的C++栈程序的源代码实现。开发者可以根据自己的需求对这个程序进行修改、补充。在学习数据结构时,借助这个程序加深代码理解,同时也可以通过它实现一些简单的项目。

  
  

评论区