21xrx.com
2024-12-22 19:21:00 Sunday
登录
文章检索 我的文章 写文章
C++模拟栈实现
2023-07-04 22:26:12 深夜i     --     --
C++ 模拟 实现 数据结构

在计算机科学中,栈是一种抽象的数据类型,它遵循“后进先出”(LIFO)的原则。栈有许多应用程序,例如在编译器中实现表达式求值,以及在操作系统中跟踪函数调用。C++是一种功能强大的编程语言,它提供了许多数据结构和算法,其中包括栈。在本文中,我们将讨论如何使用C++来实现栈。

C++中的栈可以在头文件“stack”中找到。这个头文件定义了一个类模板stack,它使得栈的实现非常简单。然而,如果你想深入了解栈的内部实现,你可以自己动手写一个。下面是一个使用C++模拟栈的示例程序。


#include<iostream>

using namespace std;

#define MAX 1000

class Stack

{

  int top;

  public:

    int arr[MAX];

    Stack() top = -1;

    void push(int x)

    {

      if (top >= (MAX-1))

      

        cout << "Stack Overflow" << endl;

      

      else

      {

        arr[++top] = x;

        cout<<x<<" pushed into stack\n";

      }

    }

    int pop()

    {

      if (top < 0)

      

        cout << "Stack Underflow" << endl;

        return 0;

      

      else

      {

        int x = arr[top--];

        return x;

      }

    }

    int peek()

    {

      if (top < 0)

      {

        cout << "Stack is Empty" << endl;

        return 0;

      }

      else

      {

        int x = arr[top];

        return x;

      }

    }

    bool isEmpty()

    {

      return (top < 0);

    }

};

int main()

{

  Stack s;

  s.push(10);

  s.push(20);

  s.push(30);

  cout << s.pop() << " Popped from stack\n";

  cout<< "Elements present in stack : ";

  while(!s.isEmpty())

  {

    cout<<s.peek()<<" ";

    s.pop();

  }

  return 0;

}

在这个程序中,我们使用C++类的概念来定义一个名为Stack的类。Stack类有一个私有成员变量“top”,它用于跟踪栈中最后一个元素。然后我们定义了一些公共函数,如push(),pop(),peek()和isEmpty()来执行各种栈操作。

在主函数中,我们创建了一个名为s的Stack对象,并使用push()函数将3个元素添加到栈中,“10”,“20”和“30”。接下来,我们使用pop()函数从栈中弹出最后一个元素,“30”。最后,我们使用peek()和pop()函数来打印栈中剩余的元素“20”和“10”。

总的来说,C++提供了很多方便的数据结构和算法,使得编程变得更加容易。在这篇文章中,我们介绍了如何使用C++来实现栈,这对于学习数据结构和算法是非常有帮助的。通过深入研究这些数据结构和算法,你可以变得更加熟练,并在编写高效代码时具有竞争优势。

  
  

评论区

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