링크 된 목록에 대한 코드를 작성하려고하지만 노드를 추가하려고하면 코드가 add() 함수의 while 루프 바로 다음 행에 멈추게됩니다. 액세스 위반 오류. 뭐가 문제 야?액세스 위반 - 위치에 쓸 수 없음
#include<iostream>
template <class T>
class linkedlist
{
struct node
{
T data;
node *lp;
}*p;
public:
linkedlist();
void add(T t);
};
template<class T>
void linkedlist<T>::add(T t)
{
node *r,*q;
r = q = p;
while(p!= NULL)
{
q = p;
p = p->lp;
}
q->lp = new node;
q->lp->data = t;
p = r;
}
template<class T>
linkedlist<T>::linkedlist()
{
p = NULL;
}
int main()
{
linkedlist<int> l1;
l1.add(3);
}
* 생성자에서 노드를 초기화해야합니다. *, 아니요, ** 구성원 초기화 목록 **에서 노드를 초기화해야합니다. –
@Als가 생성자의 일부가 아닙니다. : P –
언급 한 코드 문을 Member Initialization List에 추가 할 수 있습니까? 그럴 수 없다. 생성자 본문에만있을 수있다. 그래서 당신의 대답과 당신의 의견은 접선이다. –