含有min()函数的栈,各种操作时间复杂度为O(1)
?
設計一個棧,定義棧的數據結構,要求添加一個min函數,能夠得到棧的最小元素。要求函數min、push以及pop的時間復雜度都是O(1)。
聲明:思想非原創
#include <iostream> using namespace std; class Stack { private: int *stack;//保存數據 int minNum;//保存棧中最小數 int top;//棧頂指針 int size;//棧大小 public: Stack(int); ~Stack(void); int min(); void push(int); int pop(); }; Stack::Stack(int size) { this->size=size; stack=new int[size]; top=-1; minNum=0; } void Stack::push(int num) { if(top==-1) minNum=num; else minNum=minNum>num?num:minNum; if(top==size-1) stack[top]=num; else stack[++top]=num; } int Stack::pop() { if(top==-1) return 0; return stack[top]; } int Stack::min() { return minNum; } Stack::~Stack() { if(size==0) return; delete stack; cout<<"析構函數得到調用"<<endl; } void main() { Stack stack(10); for(int i=0;i<10;i++) stack.push(10-i); cout<<"棧中最小數為:"<<stack.min()<<endl; cout<<"棧中頂部數為:"<<stack.pop()<<endl; cin.get(); }?
轉載于:https://www.cnblogs.com/whuqin/archive/2010/11/12/4982116.html
總結
以上是生活随笔為你收集整理的含有min()函数的栈,各种操作时间复杂度为O(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 俄罗斯方块游戏笔记(一)——砖块样式配置
- 下一篇: HDU 2573 HDOJ 2573 T