jeremiah2077 发表于 2022-5-10 15:50:26

单项链表的一个小问题 请大佬帮忙回答一下

[单选] 下列语句中可以完成建立2结点的单向链表的功能的选项是。
A.head→next=new; new→next=head;

B.new→next=head;head=new;

C.new→next=head; head=new;new→next=Null;

D.head→next=Null; head→next=new;new→next=NULL;

Q:为什么不能选择D,选择B的话,new的next指向head,head又为new的地址,有什么意义?

Twilight6 发表于 2022-5-10 16:04:07


head和 new 一个是头节点 一个是 新的节点是么?

B 感觉像头插法,先将 新的节点的下一个指向现在的头节点,此时 head 的地址就可以通过 new 的 next 找到了

然后再将 head 指向 new ,此时 new 已经可以找到 head ,即 new 的 下一个节点是 head

即此时链表的头节点变成了 new,而之前的头节点为 new 的下一个节点了

D 感觉对本题来说也可以吧,但是若链表中已有元素就会导致被清了,因为一开始进行了 next = null

怎么感觉 BD 对这题来说都对,哈哈{:9_229:}

wp231957 发表于 2022-5-10 16:06:15

感觉bd都没啥毛病啊

逆鳞丶樱之羽 发表于 2022-5-10 17:47:55

直接对代码分析,假设head与new为链表节点。
对于A.head→next=new; new→next=head;
单向循环链表 head->new->head
对于B.new→next=head;head=new;
单向单项循环链表 new->head->head
对于C.new→next=head; head=new;new→next=Null;
单向单项循环链表 head->head
对于D.head→next=Null; head→next=new;new→next=NULL;
单向链表 head->new->null

另外提一点,指针是地址变量,是用来存储地址的。

jeremiah2077 发表于 2022-5-10 23:39:46

逆鳞丶樱之羽 发表于 2022-5-10 17:47
直接对代码分析,假设head与new为链表节点。
对于A.head→next=new; new→next=head;
单向循环链表 head ...

请问,答案选B还是D呢(这题给出的答案是B)?{:9_241:}

逆鳞丶樱之羽 发表于 2022-5-11 10:23:39

jeremiah2077 发表于 2022-5-10 23:39
请问,答案选B还是D呢(这题给出的答案是B)?

假设head为头结点时,只有new为链表节点,
也就是说当head不作改变时,head一直是头节点来充当指标,
当你通过head=new这条语句时,head变成了new链表的拷贝了,
此时head也是链表节点了。
而其他选项中的head一直为头节点,当你把头节点删去时可得:
A. new
B. new->head->head
C. head->head
D. new
页: [1]
查看完整版本: 单项链表的一个小问题 请大佬帮忙回答一下