21xrx.com
2024-11-10 00:28:38 Sunday
登录
文章检索 我的文章 写文章
C++ 栈的源代码
2023-07-02 06:00:29 深夜i     --     --
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++栈程序的源代码实现。开发者可以根据自己的需求对这个程序进行修改、补充。在学习数据结构时,借助这个程序加深代码理解,同时也可以通过它实现一些简单的项目。

  
  

评论区

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