概述
//两个顺序栈共享一个数据空间
#include<stdio.h>
#include "stdlib.h"
#define MAXSIZE 100 //是顺序栈所能存储的最多元素个数
typedef int datatype;
typedef struct//顺序栈的定义
{
datatype stack[MAXSIZE]; //stack 数组存储栈中所有的数据元素
int top;
} seqstack;//顺序栈的类型定义
seqstack *S,*B,s,b;//顺序栈变量定义
void INITSTACK(seqstack *S,seqstack *B)
{
S->top=-1;
B->top=MAXSIZE;
printf("S,B两个栈共享一个数组的存储空间!");
}
int EMPTY(seqstack *S,seqstack *B)
{
if(S->top<0&&B->top>=MAXSIZE)
{printf("栈空!");
return 1;
}
else return 0;
}
int FULL(seqstack *S,seqstack *B)
{
if(S->top==B->top-1)
{printf("栈满");
return 1;
}
else return 0;
}
seqstack *SPUSH(seqstack *S,datatype x)
{
if(FULL(S,B))
{
return 0;
}
else
{printf("请输入数据");
scanf("%d",&x);
S->top++;
S->stack[S->top]=x;
}
return S;
}
int SPOP(seqstack *S,seqstack *B)
{datatype x;
if(EMPTY(S,B))
{
return 0;
}
else
{
x=S->stack[S->top];
S->top--;
printf("出栈成功:%dn",x);
return (x);
}
}
seqstack *BPUSH(seqstack *B,datatype x)
{
if(FULL(S,B))
{
return 0;
}
else
{printf("请输入数据");
scanf("%d",&x);
B->top--;
B->stack[B->top]=x;
}
return B;
}
int BPOP(seqstack *S,seqstack *B)
{datatype x;
if(EMPTY(S,B))
{
return 0;
}
else
{
x=B->stack[B->top];
B->top++;
printf("出栈成功:%dn",x);
return x;
}
}
int select()
{int b;
printf("两个顺序栈共用一个数组的存储空间:n请选择功能n");
printf("1.初始化t");
printf("2.栈1进栈t");
printf("3.栈1出栈t");
printf("4.栈2进栈t");
printf("5.栈2出栈tn");
printf("0.退出tn");
scanf("%d",&b);
return b;
}
int main()
{
int select();
int a;
S=&s;
B=&b;
void INITSTACK(seqstack *S,seqstack *B);
int EMPTY(seqstack *S,seqstack *B);
int FULL(seqstack *S,seqstack *B);
seqstack *SPUSH(seqstack *S,datatype x);
int SPOP(seqstack *S,seqstack *B);
seqstack *BPUSH(seqstack *B,datatype x);
int BPOP(seqstack *S,seqstack *B);
while(1)
{
a=select();
switch(a)
{
case 0: exit(0);
case 1:INITSTACK(&s,&b);
break;
case 2:
SPUSH(&s,a);
break;
case 3:
SPOP(&s,&b);
break;
case 4:
BPUSH(&b,a);
break;
case 5:
BPOP(&s,&b);
}
}
return 0;
}
最后
以上就是虚拟母鸡为你收集整理的两个顺序栈共享一个数组的存储空间的全部内容,希望文章能够帮你解决两个顺序栈共享一个数组的存储空间所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复