数据结构(C语言版) 栈和队列 算法设计Demo11
Posted 奕兴_Victor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言版) 栈和队列 算法设计Demo11相关的知识,希望对你有一定的参考价值。
设计一个算法实现对栈取最小值的操作min函数,要求时间复杂度O(1)。
[算法分析]
将之前的最小值与新压入栈的元素两者的值进行比较,把每次较小的元素都保存在另一个辅助栈中。这样可以保证即使最小值出栈之后也可以找到次小的其他值。用两个栈来实现,栈sData存放入栈元素,栈sMin存放最小值。
[算法描述]
#define MaxSize 50
Typedef struct
Elemtype data[MaxSize];
int top;
Stack;
Stack sData,sMin; // 入栈
void Push(Elemtype data) // 第一个元素同时压入两个栈
if(sData.empty())
push(sMin,data);
else
if(data<sMin.top())
push(sData,data);
push(sMin,data);
else
push(sData,data);
void Pop() // 栈顶元素相等同时出栈
if(top(sMin)==top(sData))
pop(sData);
pop(sMin);
else
pop(sData);
Elemtype min()
return top(sMin);
以上是关于数据结构(C语言版) 栈和队列 算法设计Demo11的主要内容,如果未能解决你的问题,请参考以下文章