帮我用c++语言完善下列程序,#include <iostream> using namespace std; #define OK 1 #define ERROR 0 typedef int Status; typedef int ElemType; typedef struct SNode { ElemType data; struct SNode *next; }SNode, *LinkStack; void InitStack(LinkStack &S) { //补全代码,创建一个空链栈S,即S为空指针 } void Push(LinkStack &S, ElemType x ) { //补全代码,创建结点,数据域为x,将该结点入栈S } Status Pop(LinkStack &S,ElemType &e) { //补全代码,若栈空则输出提示信息“栈空”,返回ERROR;否则栈顶元素存入参数e,且返回OK } Status ElemType Top(LinkStack S,ElemType &e) { //补全代码,若栈空则输出提示信息“栈空”,返回ERROR;否则栈顶元素存入参数e,且返回OK } bool StackEmpty(LinkStack S) { //判断栈S是否为空栈,如果是空栈,则返回true,否则返回false }
时间: 2023-07-16 08:12:17 浏览: 66
补全代码如下:
```c++
#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct SNode {
ElemType data;
struct SNode *next;
}SNode, *LinkStack;
void InitStack(LinkStack &S) {
//创建一个空链栈S,即S为空指针
S = NULL;
}
void Push(LinkStack &S, ElemType x ) {
//创建结点,数据域为x,将该结点入栈S
LinkStack p = new SNode;
p->data = x;
p->next = S;
S = p;
}
Status Pop(LinkStack &S, ElemType &e) {
//若栈空则输出提示信息“栈空”,返回ERROR;否则栈顶元素存入参数e,且返回OK
if (S == NULL) {
cout << "栈空" << endl;
return ERROR;
}
LinkStack p = S;
e = p->data;
S = p->next;
delete p;
return OK;
}
Status Top(LinkStack S, ElemType &e) {
//若栈空则输出提示信息“栈空”,返回ERROR;否则栈顶元素存入参数e,且返回OK
if (S == NULL) {
cout << "栈空" << endl;
return ERROR;
}
e = S->data;
return OK;
}
bool StackEmpty(LinkStack S) {
//判断栈S是否为空栈,如果是空栈,则返回true,否则返回false
if (S == NULL) {
return true;
}
else {
return false;
}
}
int main() {
LinkStack S;
InitStack(S);
Push(S, 1);
Push(S, 2);
Push(S, 3);
Push(S, 4);
int e;
while (!StackEmpty(S)) {
Pop(S, e);
cout << e << " ";
}
return 0;
}
```