/***链栈的实现***/
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
typedef int Status;
typedef int SElemType;
typedef struct StackNode {
SElemType data;
struct StackNode *next;
} StackNode, *LinkStack;
//算法3.5 链栈的初始化
Status InitStack(LinkStack &S) { // 构造一个空栈 S,栈顶指针置空
S = NULL;
return OK;
}
int StackEmpty(LinkStack S)
{//若L为空栈,则返回1,否则返回0
if(S) //非空
return 0;
else
return 1;
}
//算法3.6 链栈的入栈
Status Push(LinkStack &S, SElemType e) {//在栈顶插入元素e
LinkStack p;
p = new StackNode; //生成新结点
p->data = e; //将新结点数据域置为e
p->next = S; //将新结点插入栈顶
S = p; //修改栈顶指针为p
return OK;
}
//算法3.7 链栈的出栈
Status Pop(LinkStack &S, SElemType &e) {//删除S的栈顶元素,用e返回其值
LinkStack p;
if (S == NULL)
return ERROR; //栈空
e = S->data; //将栈顶元素赋给e
p = S; //用p临时保存栈顶元素空间,以备释放
S = S->next; //修改栈顶指针
delete p; //释放原栈顶元素的空间
return OK;
}
void conversion(){
//对于输入
链栈进制转换
最新推荐文章于 2021-12-20 14:53:32 发布