如何在 C++ 中创建用户定义数据类型的栈?

2024 年 8 月 29 日 | 4 分钟阅读

在本文中,我们将讨论如何在 C++ 中创建用户定义数据类型的栈。但在讨论栈的创建之前,我们必须了解栈。

std::stack 是什么意思?

是一种数据结构,它使用后进先出 (LIFO) 的操作方法。std::stack 只有一个端点可以用于添加和删除元素。

std::stack 类是一个容器适配器。容器对象存储相似的数据类型,不同的序列容器可以组合形成一个栈。如果没有提供容器,默认将使用 deque 容器。容器适配器无法进行数据操作,因为它们不允许迭代器。

在 C++ 中,创建用户定义数据类型栈的一种方法是利用 std::stack 容器适配器和标准模板库 (STL) 提供的其他功能。

语法

它具有以下语法:

  • stack:C++ 中的标准模板库 (STL) 提供了模板类 stack。它表示一个栈数据结构,其中元素根据后进先出 (LIFO) 原则从同一端(称为栈顶)添加和删除。
  • <DataType>:此占位符表示将存储在栈中的元素的类型。DataType 已替换为我们实际想要使用的数据类型。一些例子包括 int、double、string,甚至用户定义类型(类)。
  • NameOfTheStack:栈变量由此名称引用。任何有效的标识符都可以用作名称。在这里,名称NameOfTheStack 用作示例。

栈操作

C++ 栈支持的基本操作包括:

  1. Push:将一个项目添加到栈中或推入栈中。
  2. Pop:它允许从栈中删除或弹出对象。
  3. Peek:它返回栈中的顶部元素,但不将其移除。
  4. isFull:确定栈是否已满。
  5. isEmpty:确定栈是否为空。

示例

让我们以一个例子来说明如何在 C++ 中创建用户定义数据类型的栈。

输出

The top student name in the stack is: Name of the student is: Jacob, Age of the student is: 28
Students in the stack are:
The name of the student is: Jacob, Age of the student is: 26
The name of the student is: Joseph, Age of the student is: 29
The name of the student is: Johnson, Age of the student is: 27

说明

在此示例中,此代码展示了如何使用栈在 C++ 中管理一组用户定义对象(Demo 对象)。它演示了如何访问顶部元素、推入、弹出和检查是否为空等基本栈操作。它还演示了如何为用户定义类重载 << 等运算符以自定义输出。

栈的应用

栈在 C++ 中有多种应用。栈的一些主要应用如下:

1. 函数调用管理

编程语言大量使用栈来处理函数调用和返回地址。

当函数被调用时,其参数、局部变量和返回地址被压入栈中;当函数返回时,它们从栈中移除。

2. 表达式求值

算术表达式,包括中缀、后缀前缀表达式,都使用栈进行求值。

在求值过程中,运算符和操作数被压入栈中,并根据它们的结合性和优先级执行操作。

3. 浏览器历史记录

用户可以使用栈来管理他们的浏览器历史记录,从而在之前浏览过的网站之间来回切换。

4. 撤消/重做功能

常用于文本编辑器和图形应用程序中,以创建撤消和重做功能,允许用户撤消他们对文档或设计所做的更改。

5. 内存管理

在计算机系统中,栈对于内存管理至关重要。

基于栈的数据结构,包括调用栈和栈帧,经常用于实现内存分配和释放。