请教一下c++单链表初始化的问题

勿忘心安 发布于 2014/10/15 20:18
阅读 1K+
收藏 0
#include"iostream"
using namespace std;
template<typename T>
struct listnode{
    T data;
    listnode<T>*next;
    listnode(){}
    listnode(T d = 0, listnode<T>*n = NULL) :data(d), next(n){}

};
template<typename T>
class list{
private:
    listnode<T>*header;
    listnode<T>*trailer;
    int size;
public:
    list(listnode<T>* h = NULL, listnode<T>* t = NULL, int s = 0) :header(h), trailer(t), size(s){
    header->next = trailer;//就是这里

}

请各位大神看看 每次运行到list的初始化函数的时候总是异常,请问这个初始化有什么问题,还有应该怎么改进,谢谢大家

加载中
0
DavidWTF
DavidWTF
判断一下header是否NULL
DavidWTF
DavidWTF
回复 @勿忘心安 : list的构造函数用h初始化header,而h有默认值是NULL,也就是说new list()这样写是合法的。这时传进来的h就是NULL,header也是NULL,header->next=trailer;必然出问题呀。如果你还要问为什么出错,那我就无语了。
勿忘心安
勿忘心安
感觉还是不太明白 你能详细的说一下吗 谢谢
0
勿忘心安
勿忘心安
明白了 谢谢
0
安非他命
安非他命

1.必须要用地址才能初始化一个指针,而NULL不是用来初始化的,而是用来进行判断的

2.还有要注意在传参时,一定要明确区分传址和传值

勿忘心安
勿忘心安
这个久远的问题我已经解决了,毕竟现在都大三了,不过还是谢谢您
返回顶部
顶部