#include <stdio.h>
#include <stdlib.h>
typedef int Status;
#define TRUE 1
#define FALSE 0
#define MAXSIZE 1000
typedef int SElemType;//假设数据是int
typedef struct
{
SElemType data[MAXSIZE];
int top1;//栈顶指针
int top2;//栈2指针
}SqDoubleStack;
Status Push(SqDoubleStack *s, SElemType e, int stackNumber)
{
if(s->top1+1 == s->top2)//两个栈之间相差1的时候就是栈满了
return FALSE;
if(stackNumber == 1)
{
s->top1++;
s->data[s->top1] = e;
}
else if(stackNumber == 2)
{
s->top2--;
s->data[s->top2] = e;
}
else
return FALSE;
return TRUE;
}
Status Pop(SqDoubleStack *s, SElemType *e, int stackNumber)
{
if(s->top1 == -1 || s->top2 == MAXSIZE)
return FALSE;
if(stackNumber == 1)
{
*e = s->data[s->top1];
s->top1--;
}
else if(stackNumber == 2)
{
*e = s->data[s->top2];
s->top2++;
}
else
return FALSE;
return TRUE;
}
void main(void)
{
int i = 0,getData = 0;
SqDoubleStack s;
s.top1 = -1;
s.top2 = MAXSIZE;
for(i = 0; i<10; i++)
{
Push(&s,i,1);
Push(&s,i*2,2);
}
for(i = 0; i<10; i++)
{
Pop(&s,&getData,1);
printf("1---- getData = %d\r\n",getData);
Pop(&s, &getData, 2);
printf("2---- getData = %d\r\n",getData);
}
}
共享空间的栈
最新推荐文章于 2022-09-14 03:31:01 发布