使用c++语言用类方法指针自定义一个栈,实现栈的基本功能
时间: 2024-03-07 13:48:16 浏览: 66
c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈.pdf
好的,我来给您提供一个基于指针实现的栈的类方法的示例代码,包括插入和删除功能:
```c++
#include <iostream>
using namespace std;
class Stack {
private:
struct Node {
int data; // 存储数据的变量
Node *next; // 指向下一个节点的指针
};
Node *topNode; // 指向栈顶节点的指针
public:
Stack() {
topNode = nullptr; // 初始化栈顶指针为nullptr
}
bool isEmpty() {
return topNode == nullptr; // 栈顶指针为nullptr代表栈为空
}
bool push(int value) {
Node *node = new Node; // 创建一个新节点
node->data = value; // 将元素存储到新节点的data变量中
node->next = topNode; // 将新节点的next指针指向栈顶节点
topNode = node; // 将栈顶指针指向新节点
return true; // 插入成功
}
bool pop() {
if (isEmpty()) {
return false; // 栈为空,删除失败
}
Node *node = topNode; // 将栈顶指针赋值给一个临时变量
topNode = topNode->next; // 将栈顶指针指向下一个节点
delete node; // 删除栈顶节点
return true; // 删除成功
}
int top() {
if (isEmpty()) {
return -1; // 栈为空,返回-1
}
return topNode->data; // 返回栈顶节点的data变量
}
};
int main() {
Stack s;
s.push(1);
s.push(2);
s.push(3);
while (!s.isEmpty()) {
cout << s.top() << endl;
s.pop();
}
return 0;
}
```
在这个代码中,我们定义了一个 `Stack` 类,其中包含了 `Node` 结构体、`topNode` 栈顶指针、`isEmpty`、`push`、`pop`、`top` 函数。我们可以通过 `Stack` 类中的对象来创建一个栈,并使用 `push` 函数插入元素,使用 `pop` 函数删除元素,使用 `top` 函数获取栈顶元素。
在 `Node` 结构体中,我们定义了 `data` 存储数据的变量和 `next` 指向下一个节点的指针。
在 `isEmpty` 函数中,我们判断栈顶指针是否为nullptr,如果是,则栈为空,返回 `true`,否则返回 `false`。
在 `push` 函数中,我们创建一个新的节点,并将元素存储到该节点的 `data` 变量中,将该节点的 `next` 指针指向栈顶节点,将栈顶指针指向该节点,返回 `true`。
在 `pop` 函数中,我们首先判断栈是否为空,如果是,则删除失败,返回 `false`,否则将栈顶指针赋值给一个临时变量 `node`,将栈顶指针指向下一个节点,删除 `node` 节点,返回 `true`。
在 `top` 函数中,我们首先判断栈是否为空,如果是,则返回-1,否则返回栈顶节点的 `data` 变量。
在 `main` 函数中,我们创建了一个 `Stack` 类型的对象 `s`,并使用 `push` 函数插入三个元素,使用 `top` 函数获取栈顶元素并输出,使用 `pop` 函数删除栈顶元素。最终,我们将栈中的所有元素输出。
阅读全文