我在下面的代码中遗漏了什么。该代码是关于在其头部和位置从链接列表中删除节点。我的程序没有通过所有测试用例。
Node Delete(Node head, int position) {
// Node temp=head;
int count=1;
if(position==0){
head=head.next;
return head;
}
if(position==1){
head=head.next.next;
return head;
}
if(position>1){
Node temp=head;
while(count<position){
count++;
temp=temp.next;
}
temp.next=temp.next.next;
}
return head;
}
输入
4
3
1 2 3
0
3
1 2 3
1
3
1 2 3
2
5
4 3 2 5 1
2
我的输出
23
12 4351
预期输出
23 13 12 4351
答案 0 :(得分:1)
public static Node Delete(Node head, int position) {
Node node = head;
Node prevNode = null;
int index = 0;
if (head == null && position == 0){
return head;
}
if (head != null && position == 0){
head = null;
head = node.next;
}
if (position > 0){
while(index<position){
prevNode = node;
node = node.next;
index = index + 1;
}
prevNode.next = node.next;
node = null;
}
return head;
}