请提供C++语言中如何使用结构体定义并实现顺序栈的数据结构,包括进栈(push)、出栈(pop)、显示栈中元素(display)以及获取栈长度(get_length)的操作示例代码。
时间: 2024-11-30 21:14:33 浏览: 3
栈的基本操作
在C++中,我们可以使用结构体(struct)和数组来创建一个简单的顺序栈数据结构。这里是一个基础的实现:
```cpp
#include <iostream>
// 定义结构体,包含一个整型数据元素和栈顶指针
struct StackElement {
int data;
StackElement* next;
};
class Stack {
private:
StackElement* top; // 栈顶指针
int length; // 栈的长度
public:
// 构造函数,初始化栈为空
Stack() : top(nullptr), length(0) {}
// 进栈操作(push)
void push(int value) {
StackElement* newNode = new StackElement();
newNode->data = value;
newNode->next = top;
top = newNode;
length++;
}
// 出栈操作(pop)
bool pop() {
if (top == nullptr) {
return false; // 如果栈空,则返回false
}
StackElement* temp = top;
int poppedValue = temp->data;
top = top->next;
delete temp;
length--;
return true;
}
// 显示栈中元素(display)
void display() {
if (top == nullptr) {
std::cout << "Stack is empty.\n";
} else {
StackElement* current = top;
while (current != nullptr) {
std::cout << "Top element: " << current->data << "\n";
current = current->next;
}
}
}
// 获取栈长度(get_length)
int get_length() const {
return length;
}
};
int main() {
Stack myStack;
// 测试操作
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.display(); // 输出: Top element: 3
std::cout << "Stack length: " << myStack.get_length() << "\n"; // 输出: Stack length: 3
myStack.pop();
myStack.display(); // 输出: Top element: 2
std::cout << "Stack length: " << myStack.get_length() << "\n"; // 输出: Stack length: 2
return 0;
}
```
这个例子展示了如何创建一个基本的顺序栈,并实现了push、pop、display和get_length方法。注意,在实际应用中,栈可能会选择动态分配内存(如链式存储),但在教学和演示中,这种简单的数组实现就足够了。
阅读全文