#include<stdio.h>
#include<stdlib.h>
#define Yes 1
#define No 0
#define Empty -1
typedef int SElemType;
typedef struct
{
int top[2],bot[2];
SElemType *v;
int m;
}DblStack;
SElemType Epty(DblStack s)
{
return(s.top[0]==-1&&s.top[1]==s.m);
}
SElemType Initial(DblStack &s)
{
s.m=3;
s.v=new SElemType[s.m];
s.top[0]=-1;
s.top[1]=s.m;
return Yes;
}
SElemType Push(DblStack &s,int i,int x)
{
if(i!=0&&i!=1)
{
printf("输入数据错误\n");
exit(0);
}
if(i==0)
{
s.v[++s.top[0]]=x;
return Yes;
}
else
{
s.v[--s.top[1]]=x;
return Yes;
}
}
SElemType Pup(DblStack &s,int i)
{
if(i!=0&&i!=1)
{
printf("输入数据错误\n");
exit(0);
}
switch(i)
{
case 0:{if(s.top[0]==-1)
{
printf("左栅空\n");
return Empty;
}
else
return(s.v[s.top[0]--]);
}
case 1:{if(s.top[1]==s.m)
{
printf("右栅空\n");
return Empty;
}
else
return(s.v[s.top[1]++]);
}
}
}
int main()
{
int i,x,temp;
DblStack s;
Initial(s);
printf("input 0(左)/1(右),data\n");
scanf("%d,%d",&i,&x);
while(Push(s,i,x))
{
if(s.top[1]-s.top[0]==1)
{
printf("空间已满\n");break;
}
printf("input 0(左)/1(右),data\n");
scanf("%d,%d",&i,&x);
}
while(1)
{
if(Epty(s))
{printf("全部为空");break;}
printf("弹出 0(左)/1(右)\n");
scanf("%d",&i);
temp=Pup(s,i);
if(temp!=Empty)
printf("%d\n",temp);
}
system("pause");
}
(C语言)严蔚敏版数据结构 第三章课后习题-算法设计题1 顺序链做法 书本85页
于 2022-08-29 20:54:59 首次发布