【发布时间】:2013-07-10 14:20:30
【问题描述】:
我从一本书的链接列表中遇到了一个问题,但我无法理解它想说什么?
是:1. finding middle element but looking from starting。这些行是什么意思:
n is c????
LinkedListNode next = n.next; // next= d;
6 n.data = next.data; // n.data=d;
7 n.next = next.next; // c.next= e ???
我无法得到它,你能看看并告诉我吗?
实现一个算法来删除单个链表中间的一个节点,只允许访问该节点。
示例:
输入:链表 a->b->c->d->e
中的节点‘c’ 结果:没有返回任何东西,但是新的链表看起来像 a->b->d->e解决方案:
只需将数据从下一个节点复制到这个节点,然后删除下一个节点。
注意:如果要删除的节点是链表中的最后一个节点,则无法解决此问题。没关系——你的面试官希望看到你指出这一点。在这种情况下,您可以考虑将其标记为 dummy。这是您应该与面试官讨论的问题。
1 public static boolean deleteNode(LinkedListNode n) {
2 if (n == null || n.next == null) {
3 return false; // Failure
4 }
5 LinkedListNode next = n.next;
6 n.data = next.data;
7 n.next = next.next;
8 return true;
9 }
这里,n 可能是什么?你能解释一下第 5,6,7 行吗?另外,如果n 是最后一个元素,为什么它不起作用?
我是链表的新手。我正在阅读它的所有示例,但真的被困在了这个上。
【问题讨论】:
-
帖子和标题似乎不匹配。有两个问题吗?另外,您是对的,该算法不适用于最后一个元素。
-
@ZiyaoWei,, 没有。只有 1 个问题。我发布的问题。
-
@ZiyaoWei 为什么它不起作用...你也可以解释一下第 5,6,7 行吗?
标签: algorithm linked-list