用c++写出代码 建立一个链栈,依次将a,b,c,d入栈;出栈并输出出栈结点数据域的值;将f入栈;输出当前链栈中各结点的数据域的值;
时间: 2024-04-12 15:31:08 浏览: 170
以下是使用 C++ 编写的链栈代码,实现了将元素入栈、出栈,并输出栈中结点数据域的值。
```cpp
#include <iostream>
// 定义链栈结点
struct Node {
char data;
Node* next;
};
// 链栈类定义
class LinkedStack {
private:
Node* top; // 栈顶指针
public:
LinkedStack() {
top = nullptr;
}
~LinkedStack() {
while (top != nullptr) {
Node* temp = top;
top = top->next;
delete temp;
}
}
// 将元素入栈
void push(char value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = top;
top = newNode;
}
// 出栈并输出出栈结点数据域的值
void pop() {
if (isEmpty()) {
std::cout << "Stack is empty!" << std::endl;
return;
}
Node* temp = top;
top = top->next;
char value = temp->data;
delete temp;
std::cout << "Popped: " << value << std::endl;
}
// 输出当前链栈中各结点的数据域的值
void display() {
if (isEmpty()) {
std::cout << "Stack is empty!" << std::endl;
return;
}
Node* current = top;
std::cout << "Stack: ";
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
// 判断栈是否为空
bool isEmpty() {
return top == nullptr;
}
};
int main() {
LinkedStack stack;
// 依次将 a, b, c, d 入栈
stack.push('a');
stack.push('b');
stack.push('c');
stack.push('d');
// 出栈并输出出栈结点数据域的值
stack.pop();
stack.pop();
stack.pop();
// 将 f 入栈
stack.push('f');
// 输出当前链栈中各结点的数据域的值
stack.display();
return 0;
}
```
代码中,我们使用链表实现了一个链栈,通过 `push` 函数将元素入栈,通过 `pop` 函数出栈并输出出栈结点数据域的值,通过 `display` 函数输出当前链栈中各结点的数据域的值。在 `main` 函数中,我们依次将 'a', 'b', 'c', 'd' 入栈,然后连续出栈三个元素,最后将 'f' 入栈,并输出当前链栈中各结点的数据域的值。
阅读全文