有两个类,一个是结点类,它包含结点值和指向下一结点的指针;另一个类是堆栈类,数据成员为堆栈的头指针,它是结点类的友元类。C++实现
时间: 2023-12-06 19:45:35 浏览: 64
以下是结点类和堆栈类的C++实现:
```c++
class Node {
public:
int value;
Node* next;
Node(int val) {
value = val;
next = nullptr;
}
};
class Stack {
private:
Node* head;
public:
Stack() {
head = nullptr;
}
void push(int val) {
Node* new_node = new Node(val);
new_node->next = head;
head = new_node;
}
int pop() {
if (head == nullptr) {
throw "Stack is empty";
}
int val = head->value;
Node* temp = head;
head = head->next;
delete temp;
return val;
}
bool is_empty() {
return head == nullptr;
}
~Stack() {
while (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}
}
};
```
在上面的实现中,`Node`类表示堆栈中的每个元素,它包含一个整数值和指向下一个元素的指针。`Stack`类表示堆栈本身,它包含一个指向堆栈顶部的指针。`push`方法将一个新元素添加到堆栈的顶部,`pop`方法从堆栈的顶部弹出一个元素并返回其值,`is_empty`方法检查堆栈是否为空。在堆栈被销毁时,析构函数将释放所有节点的内存。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)