#include <stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
#define MAXSIZE 5 // 元素个数
typedef int SElemType; //定义 SElemType 类型
typedef int Status;
SElemType e;
typedef struct // 定义栈
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
SqStack S;
Status InitStack(SqStack &S) // 栈初始化
{
S.base = new SElemType[MAXSIZE];
if (!S.base) exit(0);
S.top = S.base;
S.stacksize = MAXSIZE;
return 1;
}
Status Push(SqStack &S, SElemType e) //入栈
{
if (S.top - S.base == S.stacksize) return 0;// 防止栈满
*S.top = e; // 等价 *S.top++=e;
S.top++;
return 1;
}
Status Pop(SqStack &S, SElemType &e) // 出栈
{
if (S.top == S.base) return 0; // 防止栈空
S.top--; // 等价 e=*--S.top;
e = *S.top;
return e;
}
SElemType GetTop(SqStack S) // 输出栈顶元素
{
if (S.top == S.base) exit(1); // 防止栈空
return *(S.top - 1);
}
void scan()
{
while (1)
{
int a;
scanf("%d", &e);
a=Push(S, e); // 入栈所有元素
if (S.top-S.base==S.stacksize) break;
}
}
void prin()
{
printf("\n");
while (1)
{
int b;
b = Pop(S, e);
if (!b) break;
printf("%d\n",b);
}
}
Status InitStack(SqStack &S); // 栈初始化
Status Push(SqStack &S, SElemType e); //入栈
Status Pop(SqStack &S, SElemType &e); // 出栈
SElemType GetTop(SqStack S); // 输出栈顶元素
void scan();// 输入所有栈元素
void prin(); // 输出所有栈元素
/***********************函数声明******************************/
int main()
{
InitStack(S);
scan(); // 输入所有栈元素
prin(); // 输出所有栈元素
return 0;
}
桟
最新推荐文章于 2022-07-19 22:10:03 发布