关于两个栈的共享空间问题理解。
来源:互联网 发布:电视直播网站php源码 编辑:程序博客网 时间:2024/06/05 06:17
为什么要共享空间?谁用谁的多好呀!但是呢,我们都知道使用过程中我们给每个栈分配足够的空间是不太现实的,使用栈的时候,我们也不能保证栈有足够的空间,另外,栈是一个动态的存储结构,各个栈的实际大小在使用的过程中都会发生变化的,有时候其中一个已经上溢了,而另外一个还没用怎么使用。这样必定会造成空间的利用率降低。怎么办?怎么办?
共享空间可以解决一定的问题。
栈一是从栈底开始的,而栈二是从栈顶开始(其实都是栈底)栈一的位置为stack[0],栈二为stack[MaxSize-1];通过观察,只有当栈一和栈二的栈顶指针相遇时,这两个栈才满了,溢出来了。
忘了交代一下,这两个栈的栈顶指针相加正好为MaxSize-1;有这个规律,相信你在操作的过程中就不会遇见很大的问题了。
下面提示部分代码为:将一个元素item插入第1或者第2个栈的方法;
int Push(int top[],int i,int item)
{
// 栈满了,插入失败,返回一个0;
if (top[0] == top[1] - 1)
{
return 0;
}
else
{
if (i == 1)
{
top[0] ++;
}
else
{
top[1] --;
}
stack[top[i - 1]] = item; // 插入元素item;
return 1; // 栈没满,插入成功;
}
}
// 删除操作同样地方法;
int Pop(int top[],int i,int& item)
{
if (i == 1)
{
if (top[0] == -1)
{
return 0; // 栈1为空,删除失败;
}
else
{
item = stack[top[0]--];
return 1;
}
}
else
{
if (top[1] == MaxSize)
{
return 0; // 栈2为空,删除失败,返回0;
}
else
{
item = stack[top[1]++];
return 1; // 栈2为非空,删除成功,返回1;
}
}
}
总结一下,这样的共享空间问题,估计是我很少遇到的。因为多个栈共享连续的空间优点很明显:节省空间。但是弊端很大,就是要移动大量的数据元素,这样也体现了顺序表固有的缺陷。不提倡。接下来看stack的链式实现吧。
- 关于两个栈的共享空间问题理解。
- 关于SQL中的两个问题的理解
- 关于空间的理解
- 关于多核DSP C6678共享存储器问题的理解
- V4L2中两个关于图像占用空间大小的结构体项的理解
- 关于尺度空间的理解
- 关于寻址空间的理解
- 关于尺度空间的理解
- 关于Android 不居中的上下两个空间的宽度一致的问题
- 栈空间的理解
- 关于高维空间的个人理解
- 关于01背包空间优化的理解
- 关于RICHEDIT的两个问题
- 关于输入法的两个问题
- 两个关于音频的问题
- 关于MSDE 的两个问题
- 关于CHECKBOX的两个问题
- 关于Cactus的两个问题
- CSS基础
- 设计模式的通俗理解
- ORACLE存储过程show_space完整版
- javascript学习循序渐进体验--Dom体验
- 谁认识马云-马云传记读后感
- 关于两个栈的共享空间问题理解。
- 李宁总结
- 多JDK下搭建Maven Nexus 私服
- 特征选择和特征抽取 [uncompleted]
- Silverlight制作可拖动的自定义控件
- JS防止表单数据重复提交
- 常用机制设计[uncompleted]
- 中国菜刀 及使用方法
- Schema例子详解