21xrx.com
2025-03-27 00:16:50 Thursday
文章检索 我的文章 写文章
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++来实现栈,这对于学习数据结构和算法是非常有帮助的。通过深入研究这些数据结构和算法,你可以变得更加熟练,并在编写高效代码时具有竞争优势。

  
  

评论区