题目要求:设有两个栈 S1,S2 都采用顺序栈方式,并且共享一个存储区[0…maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计 S1,S2有关入栈和出栈的操作算法。
1.结构体设计
#define STACK_SIZE 10
typedef struct SharedStack
{
int elem[STACK_SIZE];
int top1;
int top2;
}SharedStack,*PSharedStack;
当top1和top2相等时,无论top1往后走还是top2往前走,都会导致top1>top2,所以判满的条件就是ps->top1 > ps->top2
2.初始化
void InitSharedStack(PSharedStack ps)
{
assert(ps != NULL);
if(ps == NULL)
return ;
ps->top1 = 0;
ps->top2 = STACK_SIZE-1;
}
初始化测试
SharedStack ps;
InitSharedStack(&ps);
printf("程序正常结束\n");
3.入栈
bool Push(PSharedStack ps,int val,int no)
{
assert(ps != NULL);
if(ps == NULL)
return false;