编写一个程序 LinkStack.cpp (或.c),实现链栈的各种基本运算(假设栈中元 素类型 ElemType 为 double);
时间: 2024-03-10 14:50:02 浏览: 220
好的,下面是实现链栈基本运算的 LinkStack.cpp 程序:
```c++
#include <iostream>
using namespace std;
typedef double ElemType;
// 定义链栈结点
typedef struct LinkStackNode {
ElemType data; // 数据域
struct LinkStackNode* next; // 指针域
} LinkStackNode, *LinkStackPtr;
// 初始化链栈
void InitStack(LinkStackPtr& top) {
top = NULL;
}
// 判断链栈是否为空
bool IsEmpty(LinkStackPtr top) {
return top == NULL;
}
// 入栈操作
bool Push(LinkStackPtr& top, ElemType e) {
LinkStackPtr p = new LinkStackNode;
if (p == NULL) {
return false;
}
p->data = e;
p->next = top;
top = p;
return true;
}
// 出栈操作
bool Pop(LinkStackPtr& top, ElemType& e) {
if (IsEmpty(top)) {
return false;
}
LinkStackPtr p = top;
e = p->data;
top = p->next;
delete p;
return true;
}
// 获取栈顶元素
bool GetTop(LinkStackPtr top, ElemType& e) {
if (IsEmpty(top)) {
return false;
}
e = top->data;
return true;
}
// 主函数,测试链栈基本运算
int main() {
LinkStackPtr top;
InitStack(top);
// 入栈
Push(top, 1.0);
Push(top, 2.0);
Push(top, 3.0);
// 出栈
ElemType e;
Pop(top, e);
cout << "出栈元素为:" << e << endl;
// 获取栈顶元素
GetTop(top, e);
cout << "栈顶元素为:" << e << endl;
return 0;
}
```
以上程序实现了链栈的初始化、判断是否为空、入栈、出栈、获取栈顶元素等基本运算。
阅读全文