程序员代码面试指南第二版 14.删除链表的中间节点
题目描述
给定一个链表,实现删除链表第 K 个节点的函数。
输入描述:
n 表示链表的长度。
m 表示删除链表第几个节点。
val 表示链表节点的值。
输出描述:
在给定的函数中返回链表的头指针。
示例1
输入
5 3
1 2 3 4 5
输出
1 2 4 5
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = Integer.parseInt(s.split(" ")[0]);
int k = Integer.parseInt(s.split(" ")[1]);
String[] str = br.readLine().split(" ");
int[] arr = new int[n];
for(int i=0; i<n; i++)
arr[i] = Integer.parseInt(str[i]);
ListNode tempHead = new ListNode(0);
ListNode curr = tempHead;
for(int i=0; i<n; i++){
curr.next = new ListNode(arr[i]);
curr = curr.next;
}
curr = tempHead.next;
for(int i=0; i<k-2; i++){
curr = curr.next;
}
curr.next = curr.next.next;
curr = tempHead.next;
while(curr!=null){
System.out.print(curr.val+" ");
curr = curr.next;
}
}
public static class ListNode{
int val;
ListNode next=null;
ListNode(int val){
this.val = val;
}
}
}