首页 新闻 会员 周边 捐助

*.exe已停止工作

0
悬赏园豆:10 [待解决问题]
 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);
这句出错,但不知道错在哪里?求解答!在线等~
c++
国产零零七的主页 国产零零七 | 初学一级 | 园豆:169
提问于:2013-10-18 17:49
< >
分享
所有回答(6)
0

一般是指针问题。

angelshelter | 园豆:9914 (大侠五级) | 2013-10-19 20:57

可否帮忙看上面的代码?

支持(0) 反对(0) 国产零零七 | 园豆:169 (初学一级) | 2013-10-20 13:29

@天真naive: 又不是完整代码

支持(0) 反对(0) angelshelter | 园豆:9914 (大侠五级) | 2013-10-20 21:40
0

你肯定哪个地方内存分配有问题,自己调试但不跟踪一下

foundwant | 园豆:202 (菜鸟二级) | 2013-10-21 13:44
0

maybe p->prev is 0.

mhgu | 园豆:206 (菜鸟二级) | 2013-10-30 15:47
0

如果p->prev为空指针的话,13行的代码:p->prev->next=newNode;将会发生错误,next域怎么引用?我想应该是这个原因

我非英雄 | 园豆:250 (菜鸟二级) | 2013-12-07 14:10
0

l.insert(l.begin(),100); begin的prev指针是空的,你下面错了。

风小手 | 园豆:248 (菜鸟二级) | 2013-12-23 00:49
0

可以调试

凤凰苑凶真 | 园豆:202 (菜鸟二级) | 2014-02-14 18:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册