1 struct Node 2 { 3 int data; 4 Node *prev; 5 Node *next; 6 Node(const int& d=int(),Node *p=NULL,Node *n=NULL):data(d),prev(p),next(n){} 7 }; 8 iterator1 insert(iterator1 itr,const int& x) 9 { 10 Node *p=itr.current; 11 theSize++; 12 Node *newNode=new Node(x,p->prev,p); 13 p->prev->next=newNode; 14 p->prev=newNode; 15 return iterator1(newNode); 16 }
在主函数中,我是用
1 list1 l; 2 l.insert(l.begin(),100);
来检验。
上面是我自己写的list,但在写insert例程的时候出错,运行一下显示list.exe已停止工作,我排查了,应该是
Node *newNode=new Node(x,p->prev,p);
这句出错,但不知道错在哪里?求解答!在线等~
一般是指针问题。
可否帮忙看上面的代码?
@天真naive: 又不是完整代码
你肯定哪个地方内存分配有问题,自己调试但不跟踪一下
maybe p->prev is 0.
如果p->prev为空指针的话,13行的代码:p->prev->next=newNode;将会发生错误,next域怎么引用?我想应该是这个原因
l.insert(l.begin(),100); begin的prev指针是空的,你下面错了。
可以调试