C语言插入链表
发布网友
发布时间:2022-04-22 15:40
我来回答
共5个回答
热心网友
时间:2023-11-11 03:44
这个应该是填写null != p,答案上少写了=号
在循环条件里,p是一个可改变的值,要判断是否到链表尾了,所以这个条件是要的
5和6一般情况下,你的答案也没问题
不过参*也有问题的,没有对q进行判断,q可能没有初始化,当链表为空的时候就会出现这情况了
热心网友
时间:2023-11-11 03:45
第一个问题:
null!p 这种写法应该是印刷错误。
null != p 才对,它跟p != null 是一样的,只不过那样写更安全【疏忽写成=(赋值)的话容发现】。
至于谭老爷子那样写,要看一下链表是否带头节点了。
本例中链表不带头,第一个节点就是实际元素,所以head指针不空就是链表不空。
如果是带头节点的链表,头节点不存放实际元素(跟这里的head指针作用一样),
那就按谭老爷子那种写法才能判断链表是否为空。
第二个问题:
都正确,只要带进去看看符合逻辑就行了。
热心网友
时间:2023-11-11 03:45
1、应该是p!=null,就是判断当前p指向的节点是否为空,其实就是检测是否到了链表尾部
至于你说的判断中加上p->next!=null,其实是不对的。因为若加上这句后,那么假如待插入的元素id最大呢, 需要插入在链尾的话,就没法实现了。如图中p指向id为5的元素时,由于这句会退出循环,那么q还是指向id为4的元素。
2、也是可以的
热心网友
时间:2023-11-11 03:46
你这个也是对的。
其实这个时候p就是q->next。
你这样做,不太好,因为要注意一个原则:
插入指针要先让新指针的next指向插入点的next,再让插入点的next指向新指针。
这样保险。
你的方法在复杂情况下会容易出错。追问null!=p这句话,按我的理解是不是有两层意思,当p=head的时候,判断链表不为空表。。
当p指向到表尾的时候,保证p不会跳出链表。。。
追答null!=p这句话只是表示p不是空指针。
目的是为了防止非法访问。
当p指向最后一个节点时,那么p->next就是空,
执行:q=p;p=p->next;后,p就是空了。
这样while(null!=p)就是假,不能进入循环。
热心网友
时间:2023-11-11 03:47
null是多余的,答案可能有误的,尽信书不如无书。追问。。。那我的答案是否是对的。。兄弟给个你的做法啊
追答&&前部分就是判断p是否为null,p指针非空才继续循环,所以p&&p->idid<id都是可以的。