#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#define MAX 100
struct Sqsack {
int* base;
int* top;
int sqsacksize;
};
void InitS(struct Sqsack* S); //初始化顺序栈
void PushS(struct Sqsack* S, int e); //入栈
void PopS(struct Sqsack* S); //出栈
int SizeS(struct Sqsack S); //求栈长
int main()
{
struct Sqsack S;
int e = 0, size = 0;
InitS(&S);
while (e != -1)
{
printf("请输入数据,-1表示结束\n");
scanf("%d", &e);
if (e != -1)
{
PushS(&S, e);
}
}
PopS(&S);
size = SizeS(S);
printf("栈长为===%d\n", size);
}
void InitS(struct Sqsack* S)
{
S->base = (int*)malloc(MAX * sizeof(int));
if (S->base == NULL)
{
printf("顺序栈开辟失败\n");
exit(0);
}
S->top = S->base;
S->sqsacksize = MAX;
printf("顺序栈开辟成功\n");
}
void PushS(struct Sqsack* S, int e)
{
if (S->top - S->base == S->sqsacksize)
{
printf("顺序栈已满\n");
exit(0);
}
else
{
*S->top = e;
S->top++;
}
}
void PopS(struct Sqsack* S)
{
int e = 0;
if (S->top == S->base)
{
printf("栈为空\n");
exit(0);
}
else
{
S->top--;
e = *S->top;
printf("出栈元素为===%d\n", e);
}
}
int SizeS(struct Sqsack S)
{
return S.top - S.base;
}```
顺序栈c语言实现—数据结构
于 2023-03-26 15:32:58 首次发布