Java 跳过M个元素并从LinkedList中删除N个元素,跳过0会引发问题
我的算法-Java 跳过M个元素并从LinkedList中删除N个元素,跳过0会引发问题,java,data-structures,linked-list,Java,Data Structures,Linked List,我的算法- private static MyList skip$DeleteItem(MyList L , int M , int N){ MyList curr = L; MyList prev = null; while(curr != null){ int counter = 0; while(curr != null && counter <M){ prev = curr;
private static MyList skip$DeleteItem(MyList L , int M , int N){
MyList curr = L;
MyList prev = null;
while(curr != null){
int counter = 0;
while(curr != null && counter <M){
prev = curr;
curr = curr.next;
counter++;
}
counter = 0;
while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
prev = curr;
}
else{
prev.next = curr;
}
counter ++;
}
}
return L;
}
private static MyList skip$DeleteItem(MyList L,int M,int N){
MyList curr=L;
MyList-prev=null;
while(curr!=null){
int计数器=0;
而(curr!=null&&计数器34-->8-->7-->5-->4-->6-->3-->1-->2-->尾部
输出-9-->34-->尾部
应为-NULL(因为所有元素都应删除)
解决方案是
while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
curr = curr.next;
L = curr;
}
else{
prev.next = curr;
}
counter ++;
}
while(curr!=null&&counter
您的“跳过”部分似乎正常,但删除部分有问题
while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
prev = curr;
}
else{
prev.next = curr;
}
counter ++;
}
while(curr!=null&&counter
在第一次迭代中,首先将curr指针前进到下一个元素,然后,if(prev==null)
将prev前进到同一个curr
因此,在您的示例中,在第一次迭代结束时,curr和prev都指向34。
从那时起,列表的其余部分将被正确删除