#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 30
typedef struct{
int elem[MAXSIZE];
int left;
int right;
}Dupsqstack;
Dupsqstack *Init_stack();//创建并初始化
int push(Dupsqstack *L,char indext,int x);//入栈
int pop(Dupsqstack *L,char indext);//出栈
main()
{
Dupsqstack *L;
L=Init_stack();
printf("输入数据\n");
int x;
scanf("%d",&x);
char indext;
printf("输入入栈方向(L/R)");
fflush(stdin);
scanf("%c",&indext);
if(push(L,indext,x))
printf("入栈成功\n");
else printf("入栈失败\n");
printf("%d %d",L->left,L->right);
printf("\n出栈\n");
printf("输入出栈方向(L/R)\n");
fflush(stdin);
scanf("%c",&indext);
if(pop(L,indext))
printf("出栈成功\n");
else printf("出栈失败");
}
Dupsqstack *Init_stack()
{
Dupsqstack *s;
s=(Dupsqstack*)malloc(sizeof(Dupsqstack));
s->left=-1;
s->right=MAXSIZE;
return s;
}
int push(Dupsqstack *L,char indext,int x)
{
if(L->left==L->right)
{
printf("栈满\n");
return 0;
}
if(indext=='L')
{
L->left++;
L->elem[L->left]=x;
}
else if(indext=='R')
{
L->right--;
L->elem[L->right]=x;
}
return 1;
}
int pop(Dupsqstack *L,char indext)
{
if(L->left==-1 && L->right==MAXSIZE)
{
printf("栈空,");
return 0;
}
else if(indext=='L')//
{
if(L->left==-1)
{
printf("左栈空,");
return 0;
}
else printf("%d\n",L->elem[L->left--]);
return 1;
}
else if(indext=='R')//
{
if(L->right==MAXSIZE)
{
printf("右栈空,");
return 0;
}
else printf("%d\n",L->elem[L->right]++);
return 1;
}
}