2、设计包含min函数的栈
来源:互联网 发布:unity3d 录屏 编辑:程序博客网 时间:2024/06/06 19:29
要求O(1)时间push、pop和min函数
分析:
push和pop是O(1)的
若要求min也是O(1)的,那么在每次push时都应计算当前最小值。又因为是栈,所以每个栈元素项保存当前的min值。
push时有两种情况:
当前值 < 之前栈顶的min值 ===> 当前值是min值
当前值 > 之前栈顶的min值 ===> 之前栈顶的min值是min值
解:
栈数据结构设计:
struct 栈元素
{
int 当前值value;
int 最小值min;
};
struct 栈
{
int 栈允许的最大size;
int 栈顶top;
struct栈元素 *elments;
};
struct 栈 stack;
栈初始化:
init()
{
stack.size = 最大大小;
stack.top = 0;
stack.elments = malloc(size * 栈元素结构大小)
}
栈销毁:
destoy()
{
free(stack.elments);
}
push操作:
push(int d)
{
if(top达到size)
{
statck.elemnts = remalloc( (p指向旧的stack.elments), 2*stack.szie*栈元素结构大小);
stack.szie *= 2;
}
elments[satck.top]. value= d;
elemnts[stack.top].min = 第一个元素top==0? d : 前一个栈顶的min值elments[satck.top-1].mi
if (当前值d < 当前栈顶的min值)
elments[satck.top].min = d;
top++;
}
pop操作:
pop()
{
if(elments[satck.top].== 0)
error("栈空");
return elemnts[--stack.top].value;
}
min操作:
min()
{
if(elments[satck.top].== 0)
error("栈空");
return elemnts[stack.top - 1].min;
}
- 2、设计包含min 函数的栈
- 2设计包含min函数的栈
- 2、设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 转载 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含 min 函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 设计包含min函数的栈---Algorithms
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- Windows Phone 引导页和密码加密
- gdb查看内存地址和栈中的值
- StackOverflow 并不只是一个问答网站
- Android单点触控技术 旋转 平移 缩放等
- SSH原理与运用(一):远程登录
- 2、设计包含min函数的栈
- JSON解析——图解
- int与long 两种数据类型有什么区别?|__int64固定大小为8字节,不受运行环境(的CPU和操作系统位数)影响
- Linux学习-shell脚本编程基础(节选)
- 尼科彻斯定理
- eclipse编译生成APK如何可以调用平台中的系统函数
- 公共日志过程
- oracle恢复update以后数据的SQL语句
- 变形课