关于栈的问题
一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是1.edcba2.decba3.dceab4.abcde答案是3。为什么求指教,谢了!...
一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是
1.edcba 2.decba 3.dceab 4.abcde
答案是3。为什么求指教,谢了! 展开
1.edcba 2.decba 3.dceab 4.abcde
答案是3。为什么求指教,谢了! 展开
3个回答
展开全部
第一个问题,你最好再定义一个重新设定Stack长度的成员函数,比如
template<class T> void Stack<T>::setSize(int l){
delete []elements;
elements=new T[maxSize];
}
这样你就可以在Stack被动态初始化后再定义它的长度。
第二个问题,你是不是没有把elements的默认值设为0?items=new Stack<int>[length];调用的是Stack的默认构造函数,如果你没有在这里把elements指向0,那么当调用析构函数的时候就会出问题。而你去掉任意一个析构函数都会导致Stack里的动态数组不被释放,所以没事。这样设置默认构造函数:
template<class T> Stack<T>::Stack(){
top=-1;
maxSize=0;
elements=0;
}
这样就应该可以了。
请参考
template<class T> void Stack<T>::setSize(int l){
delete []elements;
elements=new T[maxSize];
}
这样你就可以在Stack被动态初始化后再定义它的长度。
第二个问题,你是不是没有把elements的默认值设为0?items=new Stack<int>[length];调用的是Stack的默认构造函数,如果你没有在这里把elements指向0,那么当调用析构函数的时候就会出问题。而你去掉任意一个析构函数都会导致Stack里的动态数组不被释放,所以没事。这样设置默认构造函数:
template<class T> Stack<T>::Stack(){
top=-1;
maxSize=0;
elements=0;
}
这样就应该可以了。
请参考
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为其他都是可能的,^_^,不过,的确就是这样的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询