struct listNode
{
int value;
listNode * next;
<strong>listNode *min;</strong> //多一个指针就可以
};
class Stack
{
public:
Stack():top(NULL){};
void pop();
void push(int k);
listNode* Top();
~Stack()
{
listNode* temp=NULL;
while(top)
{
temp=top;
top=top->next;
delete temp;
}
}
listNode* Min();
private:
listNode * top;
};
listNode *Stack::Min()
{
return top->min;
}
void Stack::pop()
{
if(top==NULL)
return;
listNode *temp=NULL;
temp=top;
top=top->next;
delete temp;
}
void Stack::push(int k)
{
listNode* temp=new listNode ;
temp->value=k;
temp->next=top;
if(top==NULL||temp->value<top->value)
带MIN函数的栈实现(push pop min 操作都只花O(1))
最新推荐文章于 2018-03-18 21:23:35 发布
本文介绍了一个使用额外指针实现的栈结构,其中push、pop和获取最小值(Min)操作都具有O(1)的时间复杂度。通过在节点中维护一个指向当前最小值的指针,可以在常数时间内获取栈内的最小值。
摘要由CSDN通过智能技术生成