#include<stdio.h>
#define Maxsize 10
typedef int elemtype;
typedef struct
{
elemtype data[Maxsize];
int top1; //栈顶1
int top2; //栈顶2
}Sharestack;
Sharestack Initstack(Sharestack& S) //初始化栈
{
S.top1 = -1;
S.top2 = Maxsize;
return S;
}
int Isfull(Sharestack S) //判断是否栈满
{
if (S.top1 + 1 == S.top2)
{
return 3;
}
else if (S.top1 == 4) //设置了给个栈最多存五个元素
{
return 1;
}
else
{
return 2;
}
}
int Isempyt(Sharestack S) //判断栈是否为空
{
if (S.top1 == -1)
{
return 1;
}
if (S.top2 == Maxsize - 1)
{
return 2;
}
if (S.top1 == -1 && S.top2 == Maxsize - 1)
{
return 3;
}
}
Sharestack Creatstack(Sharestack& S, int n) //共享栈的创建
{
int x;
printf("请输入你入栈的元素:\n");
if (n <= 4)
{
for (int i = 0; i <n; i++)
{
scanf_s("%d", &x);
S.data[i] = x;
S.top1++;
}
}
if (n > 4)
{
for (int i = 0; i <= 4; i++)
{
scanf_s("%d", &x);
S.data[i] = x;
S.top1++;
}
for (int i = Maxsize - 1; i >(Maxsize+4-n) ; i--)
{
scanf_s("%d", &x);
S.data[i] = x;
S.top2--;
}
}
return S;
}
void Printfstack(Sharestack S) //打印共享栈
{
while (S.top1 != -1)
{
printf("%d\t", S.data[S.top1]);
S.top1--;
}
while (S.top2 != Maxsize)
{
printf("%d\t", S.data[S.top2]);
S.top2++;
}
}
int main()
{
Sharestack S;
Initstack(S);
Creatstack(S,10);
Printfstack(S);
int x = Isfull(S);
switch (x)
{
case 1:
printf("栈1满\n");
break;
case 2:
printf("栈2满\n");
break;
case 3:
printf("栈满\n");
break;
}
return 0;
}
c语言数据结构共享栈
最新推荐文章于 2022-12-13 09:23:11 发布