用顺序栈创建双栈结构

双栈结构,即两端都可以入栈,但无论从哪一端,仍遵从LIFO



include

define MAXSIZE 1024

typedef struct dStack{
elemtype data[MAXSIZE];
int top[3];
}DSequenStack;
DSequenStack *Init_1_DSequenStack(int m)
{
DSequenStack P=(DSequenStack )malloc(sizeof(DSequenStack)*m);
if(P==NULL)return P;
P->top[0]=m;
P->top[1]=-1;
P->top[2]=m;
return P;
}
/判空/
int DS_Empty(DSequenStack *P)
{
if(P->top[1]==-1&&P->top[2]==P->top[0])
return 1;
else return 0;
}
/判满/
int DS_Full(DSequenStack *P)
{
if(P->top[1]+1==P->top[2])
return 1;
else return 0;
}
/入栈/
int Push_1(DSequenStack *P,elemtype x1,elemtype x2)
{
if(DS_Full(P))return 0;
P->top[1]++;
P->data[P->top[1]]=x1;
P->top[2]–;
P->data[P->top[2]]=x2;

return 1;

}
/出栈/
int Pop_1(DSequenStack *P,elemtype x1,elemtype x2)
{
if(DS_Empty(P))return 0;
printf(“Top[1]:\t”);
while(P->top[1]!=-1){
x1=P->data[P->top[1]];
P->top[1]–;
printf(“\t%d\t”,x1);
}
printf(“\n”);
printf(“Top[2]:\t”);
while(P->top[2]!=P->top[0])
{
x2=P->data[P->top[2]];
P->top[2]++;
printf(“\t%d\t”,x2);
}
printf(“\n”);

return 1;

}

void main()
{
int x=1,y=2;

DSequenStack * P=Init_1_DSequenStack(10);

if(P==NULL)return ;
while(!DS_Full(P))
{
    Push_1(P,x,y);
    x++;
    y++;
}

Pop_1(P,x,y);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值