(C语言)严蔚敏版数据结构 第三章课后习题-算法设计题1 顺序链做法 书本85页

#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");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值