这个是链栈不带头结点的情况,有问题欢迎指出❤
//链栈 插入和删除都在栈顶,因此不需要头节点 栈为空的条件:S==NULL
#include<iostream>
using namespace std;
#define FALSE 0
#define OK 1
#define NULL 0
typedef int DataType;
typedef int Status;
//链栈的定义
typedef struct SNode {
struct SNode* next;//指针域
DataType data;//数据域
}SNode,*LinkStack;
//1.初始化
Status InitStack(LinkStack&S) {
S =NULL;
cout << "初始化成功!" << endl;
return OK;
}
//2.清空
Status ClearStack(LinkStack&S) {
S = NULL;
cout << "清空成功!" << endl;
return OK;
}
//3.销毁
Status DestoryStack(LinkStack&S) {
LinkStack p;
while (S != NULL) {
p = S->next;
delete S;
S = p;
}
cout << "销毁成功!" << endl;
return OK;
}
//4.遍历 先判断是否为空
Status StackTraverse(LinkStack S) {
if (S == NULL) {
cout << "栈为空!" << endl;
return FALSE;
}
while (S != NULL) {
cout << S->d