21xrx.com
2024-11-22 07:41:30 Friday
登录
文章检索 我的文章 写文章
C++的顺序栈类实现
2023-06-27 04:26:53 深夜i     --     --
C++ 顺序栈 实现

C++的顺序栈是一种基于数组实现的数据结构,它具有先进先出的特点。它可以用来实现一些常见的算法,例如搜索,排序和图论等。

为了实现C++的顺序栈,我们需要用C++类来封装底层的基本数据结构(例如数组)。我们可以使用模板来丰富它的可重用性,因为我们希望它能容纳不同类型的元素。

下面是一个基于C++的顺序栈类的实现:


template <typename T>

class ArrayStack {

private:

 int top; // 栈顶指针

 int size; // 栈的容量

 T* data; // 底层数组

public:

 ArrayStack(int capacity);

 ~ArrayStack();

 void push(T x); // 元素入栈

 T pop();    // 元素出栈

 bool empty();  // 判断栈是否为空

 bool full();  // 判断栈是否为满

};

template <typename T>

ArrayStack<T>::ArrayStack(int capacity) {

 top = -1;

 size = capacity;

 data = new T[size];

}

template <typename T>

ArrayStack<T>::~ArrayStack() {

 delete[] data;

}

template <typename T>

void ArrayStack<T>::push(T x) {

 if (full()) {

  std::cout << "Stack Overflow\n";

  exit(EXIT_FAILURE);

 }

 data[++top] = x;

}

template <typename T>

T ArrayStack<T>::pop() {

 if (empty()) {

  std::cout << "Stack Underflow\n";

  exit(EXIT_FAILURE);

 }

 return data[top--];

}

template <typename T>

bool ArrayStack<T>::empty() {

 return top == -1;

}

template <typename T>

bool ArrayStack<T>::full() {

 return top == size - 1;

}

这个类定义了一个顺序栈的基本操作:push,pop,empty和full。对于每个操作,都有相应的保护,以确保栈的完整性不被破坏。

要使用这个类,我们可以像这样声明一个实例:


ArrayStack<int> myStack(10);

这将创建一个整数类型的栈,容量为10。

我们可以像这样用类的方法来执行栈操作:


myStack.push(5);

myStack.pop();

myStack.empty();

myStack.full();

这个类提供了一种简洁而优雅的方式来实现顺序栈,同时还增加了可重用性和灵活性。我们可以很容易地将它集成到现有的代码中,并在需要时对其进行修改。

  
  

评论区

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