对于删除任何索引的节点,我无法理解代码的最后一行“ temp.next = t;” 静态类Node {E data; 节点下一个; public Node(E data) { this.data = data; next = null; } } public void deleteAtIndex(int index){
Node temp = head; for (int i = 1; i < index-1 ; i++) { temp=temp.next; } Node t = temp.next.next; temp.next = t; }`
使用Java编写该代码有什么需要,因为提到了我们使用“ temp.next = t;”。到“从列表取消链接已删除的节点”。如果删除最后一行,则代码未提供所需的输出。
问题来源:stackoverflow
让我举一个例子 -
考虑5-> 6-> 10-> 15。假设您要删除10。
从逻辑上讲,您想找到6并使其指向15。
为此,第一步需要您获得指向您对象的节点(我们要删除的节点) for (int i = 1; i < index-1 ; i++) { temp=temp.next; }
在此for循环中,我们只需找到指向要删除的对象的节点即可。
Node next = temp.next.next; //15
temp.next = next; // Point 6 to 15
我们将“ 6”的下一个节点设置为要删除的对象的下一个节点。为什么?因为我们希望它是:5-> 6-> 15
您的下一个参数包含值为“ 15”的节点。
温度为“ 6”。
更改之前的Temp.next指向10。更改之后将指向15。
答案来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。