- 有一个程序,请大家进来分析一下,多谢先!问题1:下面这个程序,先
- 问题1:下面这个,先创建了一个链表,再输出这个链表;(这一段程序,我测试过,是正常的。)
然后,删除链表中的一个结点,再次输出这个更改后的
链表。(程序编译没问题,但在运行它时,即生成exe文件时,被告知是程序非法操作。)
问题2:int* p=NULL
int* t=0;
这两个表达式有什么不同吗? NULL和0在c++是不是一样的?
请看看哪里出了问题。
# include
# include
struct InNode{
问题1:
- void ist(InNode* &f){
...
InNode* t=p->next;
delete p;
p=t;
}
上面这个程序把链表的一个节点删掉后却没有把其它的节点接起来, 楼上的分析很对,应该找到p的前一节点,照你的意思应该是t,然后t->next=p->next;就行了,至于怎么找到t,还要改你的前一个while循环,按你的能力应该很容易就改好了
事实上上面这个函数能运行,只不过链表中的一个节点的next指向了一个没有数据的位置,所以当运行到
void travel(InNode* f)
{
while(f)
{
cout<data<<", ";//程序在这一行会出错,因为f指向那个节点时,里边的数据已经被你delete掉了,所以出错了
f=f->next;
}
...
}
第二个问题,
两种定义是一样的,事实上,经常用C编程的人都知道 , 要使用NULL时,应该在前面先写一句:
#define NULL 0