有一个程序,请大家进来分析一下,多谢先!问题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