Java 从链表中删除所有节点(给定开始索引和结束索引)
我正在编写一个额外的Java 从链表中删除所有节点(给定开始索引和结束索引),java,linked-list,nodes,Java,Linked List,Nodes,我正在编写一个额外的removeRange()方法,除了开始索引和结束索引作为参数之外。我已经通过了所有条件,除了节点数等于从开始到结束的范围 示例“我的链接列表”包含: 1 -> 2 -> 3 调用方法removeRange(0,2)后: 列表应变为null,因为从0到2,计数为3,并且我的列表中还有3个元素 如果可以的话,看看这张图片,以便更好地了解正在发生的事情 代码: public void removeRange(int start, int end) { if
removeRange()
方法,除了开始索引
和结束索引
作为参数之外。我已经通过了所有条件,除了节点数等于从开始到结束的范围
示例“我的链接列表”包含:
1 -> 2 -> 3
调用方法removeRange(0,2)
后:
列表应变为null
,因为从0到2,计数为3,并且我的列表中还有3个元素
如果可以的话,看看这张图片,以便更好地了解正在发生的事情
代码:
public void removeRange(int start, int end) {
if(start < 0 || end < 0) {
throw new IllegalArgumentException();
}
if(start == 0 && end == 0) {
front = front.next;
} else if (start == 0 && end == 1) {
front = front.next.next;
} else {
ListNode head = front;
for(int i = 0; i < start-1;i++) {
head = head.next;
}
ListNode tail = front;
for(int i = 0; i < end;i++) {
tail = tail.next;
}
head.next = tail.next;
}
}
public void remoterange(int start,int end){
如果(开始<0 | |结束<0){
抛出新的IllegalArgumentException();
}
如果(开始==0&&end==0){
front=front.next;
}else if(start==0&&end==1){
front=front.next.next;
}否则{
ListNode头=前面;
对于(int i=0;i
假设您的tail.next==null
那么您仍然需要设置front=head
,就像您在之前更新front
的案例中所做的那样,假设您的tail.next==null
那么您仍然需要设置front=head
,就像您在您的以前更新front
的情况假设您的tail.next==null
那么您仍然需要设置front=head
,就像以前更新front
的情况一样,假设您的tail.next==null
那么您仍然需要设置front=head
正如您在之前更新front
的案例中所做的一样,对任何链接数据结构(列表、树、图形)进行编码的最佳方法是获取白板,并绘制链接列表。然后,对于测试输入,一次一行地遍历代码,就像计算机执行代码一样。对于每一行,在绘制的版本上进行相应的更改。在某个时刻,代码会告诉你画一些你知道不对的东西,这会告诉你你的问题在哪里
我在代码中注意到的一点是,您不能确保输入范围与列表的大小一致。如果列表有5个节点长,有人调用RemoveAnte(10,12),该怎么办
对于这个特定的问题,您有4个案例,您应该按照以下顺序测试和处理它们。
1.Start=head和End=tail,此时您将head和tail都设置为null,从而清空链接列表。2.开始=头部。将头部移动到端点+1。 3.结束=结束。将尾部移动到起始位置-1。
4.其他一切。头部=开始+1,尾部=结束-1 对任何链接数据结构(列表、树、图形)进行编码的最佳方法是获得白板,然后绘制链接列表。然后,对于测试输入,一次一行地遍历代码,就像计算机执行代码一样。对于每一行,在绘制的版本上进行相应的更改。在某个时刻,代码会告诉你画一些你知道不对的东西,这会告诉你你的问题在哪里 我在代码中注意到的一点是,您不能确保输入范围与列表的大小一致。如果列表有5个节点长,有人调用RemoveAnte(10,12),该怎么办 对于这个特定的问题,您有4个案例,您应该按照以下顺序测试和处理它们。 1.Start=head和End=tail,此时您将head和tail都设置为null,从而清空链接列表。
2.开始=头部。将头部移动到端点+1。 3.结束=结束。将尾部移动到起始位置-1。
4.其他一切。头部=开始+1,尾部=结束-1 对任何链接数据结构(列表、树、图形)进行编码的最佳方法是获得白板,然后绘制链接列表。然后,对于测试输入,一次一行地遍历代码,就像计算机执行代码一样。对于每一行,在绘制的版本上进行相应的更改。在某个时刻,代码会告诉你画一些你知道不对的东西,这会告诉你你的问题在哪里 我在代码中注意到的一点是,您不能确保输入范围与列表的大小一致。如果列表有5个节点长,有人调用RemoveAnte(10,12),该怎么办 对于这个特定的问题,您有4个案例,您应该按照以下顺序测试和处理它们。 1.Start=head和End=tail,此时您将head和tail都设置为null,从而清空链接列表。
2.开始=头部。将头部移动到端点+1。 3.结束=结束。将尾部移动到起始位置-1。
4.其他一切。头部=开始+1,尾部=结束-1 对任何链接数据结构(列表、树、图形)进行编码的最佳方法是获得白板,然后绘制链接列表。然后,对于测试输入,一次一行地遍历代码,就像计算机执行代码一样。对于每一行,在绘制的版本上进行相应的更改。在某个时刻,代码会告诉你画一些你知道不对的东西,这会告诉你你的问题在哪里 我在代码中注意到的一点是,您不能确保输入范围与列表的大小一致。如果列表有5个节点长,有人调用RemoveAnte(10,12),该怎么办 对于这个特定的问题,您有4个案例,您应该按照以下顺序测试和处理它们。 1.Start=head和End=tail,此时您将head和tail都设置为null,从而清空链接列表。
2.开始=头部。将头部移动到端点+1。 3.结束=结束。将尾部移动到起始位置-1。
4.其他一切。头部=起点+1,尾部=