设有两个堆栈S1,S2都采用顺序栈方式,并且共享一个存储区,采用栈顶相向、迎面增长的存贮方式,

2025-02-27 19:52:42
推荐回答(1个)
回答1:

1 s1空:S1的栈顶等于栈底 s2空:s2的栈顶等于栈底
2 s1满:S1的栈顶等于S2的栈顶 s2满:S2的栈顶等于S1的栈顶

#include
#define TYPE_S1 1
#define TYPE_S2 -1
#define STACK_SIZE 20
void StackPush(int **stackTop, int elmnt, int type)
{
**stackTop = elmnt;
*stackTop += type;
}

void main()
{
int stack[STACK_SIZE] = {0};
int *S1Top = &stack[0], *S2Top = &stack[STACK_SIZE - 1];
int i, input =0;

for (i = 0; i < 20; i++)
{
printf("请输入一个整数:");
scanf("%d", &input);
if(input % 2 ==0)
{
StackPush(&S1Top, input, TYPE_S1);
}
else
{
StackPush(&S2Top, input, TYPE_S2);
}
if(S1Top == S2Top)
{
printf("堆栈已满\n");
break;
}
}
return;
}