永发信息网

数据结构(c语言版).哥哥姐姐们,帮忙做题.有分拿的.

答案:1  悬赏:60  手机版
解决时间 2021-07-16 16:07
设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区[0……MAXSIZE-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向、迎面增长的存储方式,编写程序实现S1,S2有关入栈和出栈的操作。
最佳答案

根据您的意思,写出如下代码


#include <stdlib.h>
#include <stdio.h>


#define MAXSIZE 100


//共享数据区


int datas[MAXSIZE];


typedef struct Stack1
{
int top;
} _STACK1;


typedef struct Stack2
{
int top;
} _STACK2;


void InitStack1(Stack1* stack)
{
stack->top = -1;
}


void InitStack2(Stack2* stack)
{
stack->top = MAXSIZE;
}


int IsEmpty(Stack1* stack1, Stack2* stack2)
{
if(-1 == stack1->top && MAXSIZE == stack2->top)
return 1;
else
return 0;
}


int IsFull(Stack1* stack1, Stack2* stack2)
{
if(1 == (stack2->top-stack1->top))
return 1;
else
return 0;
}


int Push1(Stack1* stack1, Stack2* stack2, int data)
{
if(IsFull(stack1, stack2))
{
printf("Stack is full\n");
return -1;
}
datas[++(stack1->top)] = data;
return data;
}


int Push2(Stack1* stack1, Stack2* stack2, int data)
{
if(IsFull(stack1, stack2))
{
printf("Stack is full\n");
return -1;
}
datas[--(stack2->top)] = data;
return data;
}


int Pop1(Stack1* stack)
{
if(-1 >= stack->top)
{
printf("Stack1 is empty\n");
return -1;
}
return datas[stack->top--];
}


int Pop2(Stack2* stack)
{
if(MAXSIZE <= stack->top)
{
printf("Stack2 is empty\n");
return -1;
}
return datas[stack->top++];
}


void ShowStack1(Stack1* stack)
{
int i;
for(i=0; i<=stack->top; i++)
{
printf("%d\t", datas[i]);
}
printf("\n");
}


void ShowStack2(Stack2* stack)
{
int i;
for(i=MAXSIZE-1; i>=stack->top; i--)
{
printf("%d\t", datas[i]);
}
printf("\n");
}


void main()
{
Stack1 stack1;
Stack2 stack2;
InitStack1(&stack1);
InitStack2(&stack2);
int i;
for(i=1; i<=30; i++)
Push1(&stack1, &stack2, i);
for(i=MAXSIZE; i>=70; i--)
Push2(&stack1, &stack2, i);
ShowStack1(&stack1);
ShowStack2(&stack2);
Pop1(&stack1);
ShowStack1(&stack1);
Pop2(&stack2);
ShowStack2(&stack2);


}


如果有什么不明白的可以追问。


谢谢采纳!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我国大力推广的方便而有效的防治地方性甲状腺
DNF30级紫左伦有哪些
有没有免费下载歌曲或电子书的网站啊
怎么拿移动手机充值QB》?【急】
我感觉不满足,跟他说不重视?
新买的音响需要轰么?
QQ华夏攻低的问题
谁知道那里有批发外贸相机的
迅雷客户端进入收藏资源的时候,总提示读取信
QQ华夏装备档次怎么提升?
翻译英语句子和词组
传越火线图标几级点亮
为啥我P3能打开到一半就卡那了!这是为什么
怎样学会所谓的“阿谀奉承”??
丝路谋士怎么加点有图[复制的不要
推荐资讯
谁有长不高,后来用其他方法又长高了的啊。
梦幻怎么飞升啊?
刘翔老家是哪的?
大话西游2仙侣奇缘的开场笛声和片尾歌曲分别
马加爵一个怎样的人
人字口中站
东营到云南有多远?
陪电脑帮忙看 看。指点下
脚指甲往肉里长怎么办?
qq三国37级怎么样最快速度达到15w活力(只有1
Sara全部歌曲
每天晚上11点左右肚子的右下方和腰就疼的要命
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?