MS algorithm interview (2) Stack with min function
2011-04-08 13:21
411 查看
/*
2.设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
*/
class Stack {
private:
struct Link
{
int data;
Link* next;
Link(const int & dat,Link* nxt):data(dat),next(nxt){}
~Link(){}
}*pHead;
Li
4000
nk *pMinimum;
public:
Stack():pHead(NULL),pMinimun(NULL){}
Stack(const int& initial)
{
pHead=new Link(initial,NULL);
pMinimun=new Link(initial,NULL);
}
~Stack()
{
Link* tmpNode=NULL;
while(pHead!=NULL)
{
tmpNode=pHead;
pHead=pHead->next;
delete tmpNode;
tmpNode=NULL;
}
while(pMinimum!=NULL)
{
tmpNode=pMinimum;
pMinimum=pMinimum->next;
if(tmpNode!=NULL)
{
delete tmpNode;
tmpNode=NULL;
}
}
}
bool push(const int& newData)
{
pHead=new Link(newData,pHead);
if(pMinimum==NULL ||pMinimum->data>=newData)
{
pMinimum=new Link(newData,pMinimum);
}
return true;
}
bool pop(int& iData)
{
if(pHead==NULL)
{
return false;
}
iData=pHead->data;
Link* tmpNode=pHead;
pHead=pHead->next;
delete tmpNode;
if(iData==pMinimum->data)
{
tmpNode = pMinimum;
pMinimum = pMinimum->next;
delete tmpNode;
}
return true;
}
bool min(int& iMinimum) const
{
if(pMinimum == NULL)
{
return false;
}
iMinimum = pMinimum->data;
return true;
}
bool empty() const
{
return pHead == NULL;
}
};
2.设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
*/
class Stack {
private:
struct Link
{
int data;
Link* next;
Link(const int & dat,Link* nxt):data(dat),next(nxt){}
~Link(){}
}*pHead;
Li
4000
nk *pMinimum;
public:
Stack():pHead(NULL),pMinimun(NULL){}
Stack(const int& initial)
{
pHead=new Link(initial,NULL);
pMinimun=new Link(initial,NULL);
}
~Stack()
{
Link* tmpNode=NULL;
while(pHead!=NULL)
{
tmpNode=pHead;
pHead=pHead->next;
delete tmpNode;
tmpNode=NULL;
}
while(pMinimum!=NULL)
{
tmpNode=pMinimum;
pMinimum=pMinimum->next;
if(tmpNode!=NULL)
{
delete tmpNode;
tmpNode=NULL;
}
}
}
bool push(const int& newData)
{
pHead=new Link(newData,pHead);
if(pMinimum==NULL ||pMinimum->data>=newData)
{
pMinimum=new Link(newData,pMinimum);
}
return true;
}
bool pop(int& iData)
{
if(pHead==NULL)
{
return false;
}
iData=pHead->data;
Link* tmpNode=pHead;
pHead=pHead->next;
delete tmpNode;
if(iData==pMinimum->data)
{
tmpNode = pMinimum;
pMinimum = pMinimum->next;
delete tmpNode;
}
return true;
}
bool min(int& iMinimum) const
{
if(pMinimum == NULL)
{
return false;
}
iMinimum = pMinimum->data;
return true;
}
bool empty() const
{
return pHead == NULL;
}
};
相关文章推荐
- Stack with Function min()
- No. 02 - Stack with Function min()
- [Random Coding]StackWithMin
- Q3.2 Stack with Min
- (MS)Design an algorithm to find the maximum subsquare such that all four borders are filled with bla
- Stack with max and min 查找堆中最大最小数
- MS algorithm interview(1) BST2DoubleList
- 2.设计包含 min 函数的栈[StackWithMinValue]
- MS algorithm interview (3,4,5)
- MS algorithm interview (6,7,8) LinkedList & verifyBST & reverse word
- stackWithMIn
- Design stack containing min function
- stackoverflow about python dynameic inovke function with it's name
- 最大最小公平共享算法 Max-min Fair Share Algorithm
- TypeError: a(...).live is not a function(jquery.unobtrusive-ajax.min.js 引入报错)
- Can not find a java.io.InputStream with the name [targetFile] in the invocation stack.
- mysql function with cursor
- (Struts2文件下载)Can not find a java.io.InputStream with the name [inputStream] in the invocation stack
- Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get
- Can not find a java.io.InputStream with the name [inputStream] in the invocation stack问题解决