gpt4 book ai didi

java - BJP5练习16.7 : deleteBack — Help me understand the solution

转载 作者:行者123 更新时间:2023-12-01 21:21:31 25 4
gpt4 key购买 nike

我一直在做这个练习来练习ListNode,并且非常沮丧,因为尽管我认为我写的代码是正确的(如下所示),但它没有让我通过。

public int deleteBack()
{
ListNode p = front;
if(p == null)
{
throw new NoSuchElementException();
}

if(p.next == null)
{
int data = p.data;
p = null;
return data;
}

while(p.next.next != null)
{
p = p.next;
}
int data = p.next.data;
p.next = null;
return data;
}

接下来,我尝试总共创建三个等于 front 的新 ListNode。虽然,我不太明白为什么这是必要的。

public int deleteBack()
{
ListNode p = front;
if(p == null)
{
throw new NoSuchElementException();
}

ListNode q = front;
if(q.next == null)
{
int data = q.data;
q = null;
return data;
}

ListNode r = front;
while(r.next.next != null)
{
r = r.next;
}
int data = r.next.data;
r.next = null;
return data;
}

不幸的是,这也给了我与以前相同的结果(仅通过了三个测试),直到我将 q = null 更改为 front = null。进行此更改后,所有测试均通过。

我想要理解的是

  • 为什么我的原始代码(对我来说似乎很好)不起作用。
  • 为什么我必须创建多个等于 frontListNode
  • 为什么我必须设置 front = null 而不是 q = null

我还远远没有满意。有人可以帮助我理解为什么需要进行这些更改吗?

最佳答案

https://practiceit.cs.washington.edu/problem/view/bjp5/chapter16/e7-deleteBack
要求 private ListNode 前面;//null 表示空列表

在第一种情况下, front 已经为空(与其副本 p 一样)。
在第二种情况下,您删除列表中最后一个也是唯一一个值,因此 front 必须变为 null,因为列表现在为空。将本地副本 q 设置为 null 并不能解决这个问题。
在第三种情况下,列表中有超过 1 个元素,因此删除最后一个元素后列表不为空,并且 front 必须保持其非空值。

关于java - BJP5练习16.7 : deleteBack — Help me understand the solution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com