2.2堆栈
来源:互联网 发布:java 将字符串格式化 编辑:程序博客网 时间:2024/06/04 04:52
eg.要求一个数组实现两个堆栈,要求最大限度地利用数组空间,使数组只要有空间入栈就可以成功
【分析】 一种比较聪明的方法是使这两个栈分别从数组的两头开始 向中间生长;当两个栈的栈顶指针相遇时,表示两个栈都满了。
#include<stdio.h>#include<stdlib.h>#define MaxSize 100typedef int ElementType;typedef struct Dstack { ElementType Data[MaxSize]; int Top1; //堆栈1的栈顶指针 int Top2; //堆栈2的栈顶指针}S;Dstack S;S.Top1 = -1;S.Top2 = MaxSize;//入栈void Push(struct Dstack *PtrS, ElementType item, int Tag) { //Tag用来标记两个堆栈1和2 if (PtrS->Top2 - PtrS->Top1 == 1) { //两个挨在一起了堆栈就满了 printf("堆栈满\n"); 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("堆栈1空\n"); return NULL; } else return PtrS->Data[(PtrS->Top1)--]; } else { if (PtrS->Top2 == MaxSize) { printf("堆栈2空\n"); return NULL; } else return PtrS->Data[(PtrS->Top2)++]; }}
阅读全文
0 0
- 2.2堆栈
- 2.2 堆栈溢出
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- 堆栈
- hihocoder
- Android单元测试(二):Mockito框架的使用
- python模板引擎Jinja2基础
- Python神经网络代码识别手写字具体流程(二):矩阵的前向传播
- 文章标题
- 2.2堆栈
- 习题6.2(1)
- getsockname函数与getpeername函数的使用
- 异常及处理
- 网络中的一些术语
- eclips利用dropins目录安装插件
- maven手动添加jar包到本地仓库
- Java中对一个list进行排序
- tf.name_scope&tf.variable scope