用一个数组实现两个堆栈,最大地使用数组的空间,只要有空间就能入栈成功
来源:互联网 发布:一路发微博营销软件 编辑:程序博客网 时间:2024/05/17 00:52
使两个堆栈分别在数组的两端作为开始:有一个标记,用来区分是哪一个堆栈,Tag。
另外,对于两个堆栈的栈顶,其中一个开始是是0.另外一个初始值就是MaxSize-1了。
所以判断这两个堆栈为空的方法分别为:指向-1和指向MaxSize 这两个是我们自己定义的,就是这样,没有原因
#define MaxSize <存储数据元素最大个数>
struct DStack{
ElementType Data[MaxSize];
int Top1;
int Top2;
}S;
S.Top1 = -1;
S.Top2 = MaxSize;//这两个值表示的是在堆栈为空时的指针情况。
操作:push什么时候就算满了?是两个指针对头的时候,也即Top2-Top1=1;
void Push(struct DStack *PtrS, ElementType item, int Tag)
{if(Ptrs->Top2-PtrS->Top1==1)//堆栈满
{printf("堆栈满");
return;
}
if(Tag==1)??对第一个堆栈进行操作
PtrS->Data[++(PtrS->Top1)]=item;
else
PtrS->Data[--(Ptrs->Top2)]=item;
}
出栈操作
ElementType Pop(struct DStack *PtrS, int Tag){
if(Tag==1){
if(Ptrs->Top1==-1){
printf("堆栈为空");
return;}
else return PtrS->Data[(PtrS->Top1)--]
}else{
if(PtrS->Top2 == MaxSIze){
printf("堆栈空");return NULL;}
else return PtrS->Data[(PtrS->Top2)++];
}
}
- 用一个数组实现两个堆栈,最大地使用数组的空间,只要有空间就能入栈成功
- 数据结构:请用一个数组实现两个堆栈,要求最大地利用数组空间,使 数组只要有空间入栈操作就可以成功
- 用一个数组表示两个栈,只要数组有空间,往栈中添加元素就能成功
- 用数组实现两个栈,要求最大地利用空间
- 一个数组实现两个堆栈
- 数组最大存放空间。。。。
- 在一个数组中实现两个堆栈
- 在一个数组中实现两个堆栈
- 两个数组实现堆栈
- 给定两个排序的数组,其中A有足够空间容纳B,实现一个方法将B容纳进A并排序
- 有两个排序数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2,实现一个函数,把A2 插入到A1,并且是有序的。
- 使用数组实现堆栈
- 4-7 在一个数组中实现两个堆栈
- 数组空间的计算
- 仅用一个数组而实现两个栈的例程 除非数组的每一个单元都被使用 否则栈例程不能有溢出声明
- 6-3 在一个数组中实现两个堆栈(20 分)-pta_same_无聊的水体
- 两个有序数组的合并排序,Java代码实现,并去重复,考虑空间利用率问题
- 堆栈的数组实现
- 深入java (类)初探类的加载和初始化顺序
- jQuery的ajax(get)省市联动
- Android之error: 'const struct JNINativeInterface' has no member named 'callVoidMethod'
- C/C++中的计时函数
- SVM中的Dual
- 用一个数组实现两个堆栈,最大地使用数组的空间,只要有空间就能入栈成功
- 简易扁平旅游网H5开源项目
- 使用Bochs运行程序
- hiho一下 第150周 Demo Day
- C++普通函数,普通成员函数、静态成员函数的区别
- 抛硬币第一次出现连续两个正面的期望次数
- Sicily--1471. No Left Turns(BFS)
- Android RecyclerView 使用完全解析 体验艺术般的控件
- 函数指针数组