永发信息网

用一个数组实现两个栈,尽可能利用存储空间,写出两个栈的插入、删除操作算法。 考研题,请详细点,谢谢!

答案:1  悬赏:80  手机版
解决时间 2021-01-19 07:29
用一个数组实现两个栈,尽可能利用存储空间,写出两个栈的插入、删除操作算法。 考研题,请详细点,谢谢!
最佳答案
转一个吧
---------------------懒得写了
要2个栈公用一个存储空间看来栈顶指针只能从两端开始了(和队列有点像)
设2个栈为s0,s1 ,s1初始的栈顶指针为-1,s2的初始栈顶指针为N
typedef struct
{
elemtype stack[N]; //栈存储空间
int top[2]; //top为两个栈顶指针
}St;
St s;//s为全局变量用于操作
void push(int i,elemtype e)//入栈操作,i代表栈的编号,e为入栈元素
{
if(i!=0||i!=1)exit(0);//栈号不对
if(s.top[1]-s.top[0]==1)//栈满
{
printf("FULL!");
return;
}
if(i==0)s.tack[++s.top[0]]=e;//s0入栈
if(i==1)s.tack[--s.top[1]]=e;//s1入栈
}
void pop(int i,elemtype &e)//出栈操作,i代表栈的编号,e为出栈元素
{
if(i!=0||i!=1)exit(0);//栈号不对
if(i==0)
{
if(s.top[0]==-1)//栈s0空
{
printf("EMPTY!");
return;
}
else e=s.stack[s.top[0]--];//s0出栈
}
if(i==1)
{
if(s.top[1]==N)//栈s1空
{
printf("EMPTY!");
return;
}
else e=s.stack[s.top[1]++];//s1出栈
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
--________doyoulikeabedroom?--BecauseIlike
"我不杀伯仁,伯仁却因我而死,"出自哪个典故
要快,谢谢
女儿中.考六a六b能考上青州一中吗?语文英语化
超神吧英雄聚火物理用什么阵容伤害最高
大学在校成绩单怎么查啊
对于喷子,应该怎么办?
中国古代有哪些著名的桥梁?除了赵州桥外,还
求人告诉我答案
南海区交通局小塘养路费征收站地址有知道的么
乾县哪有黄金回收的地方
蚕蛹炸着吃和煮着吃哪种营养流失的少?
在4.5,18,9,2.25,36中选出四个数写成一个比例
枣木高速是的木是指木石镇么
家里的生活用水,水垢太大.怎么办
推荐资讯
世说新语中谢家的重要人物有哪些
思维方式的种类
关于小鲜肉传递正能量举例作文
临平一中往年初三中考考上余高二高的总共有几
复读选择精华
描写冲动的词语
各()各()??
求借一个虎扑账号,能发鉴定帖子的就行!!
温州哪里有卖薄荷味的烟?
北京南邵到黑山扈怎么坐地铁
今年の天気が悪かった( )、野菜の値段が上が
周杰伦《菊花台》该如何正确演唱?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?