原文链接:https://blog.csdn.net/Whynotwu/article/details/117970367
对其细节分析
输入一个链表,实现删除链表第 K 个节点。
输入:
5 3
1 2 3 4 5
输出:
1 2 4 5
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//nextLine是Enter键前所有的字符,是可以得到带字符的字符串,split(" ")将字符以空格隔开
String[] n=in.nextLine().split(" ");//0 1 5 4
String[] num=in.nextLine().split(" ");//0 1 2 3 4 1 2 3 4 5
Node head=trans(num);//把数组变成链表
//Integer.parseInt将String转Int
Node newHead=removeMidNode(head,Integer.parseInt(n[1]));
while(newHead!=null){
System.out.print(newHead.value+" ");
newHead=newHead.next;
}
}
//数组转链表
public static Node trans(String[] nums) {
Node head = new Node(Integer.parseInt(nums[0]));
Node cur = head;
for(int i = 1; i < nums.length; i++) {
cur.next = new Node(Integer.parseInt(nums[i]));
cur = cur.next;
}
return head;
}
//删除第k个节点
public static Node removeMidNode(Node head,int k){
if(head==null||k<1){
return head;
}
Node cur=head;
for(int i=0;i<k-2;i++){
cur=cur.next;
}
cur.next=cur.next.next;
return head;//返回变完的链表,或者是k>0不满足删除条件返回的是原本链表
}
}
class Node{
public int value;
public Node next;
public Node(int value){
this.value=value;
}
}。