1.题目
题目描述
给定一个链表,实现删除链表第 K 个节点的函数。
输入描述:
n 表示链表的长度。 m 表示删除链表第几个节点。 val 表示链表节点的值。
输出描述:
在给定的函数中返回链表的头指针。
示例1
输入
复制
5 3 1 2 3 4 5
输出
复制
1 2 4 5
2.代码
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static class LinkedNode{
int val;
LinkedNode next;
public LinkedNode(int val){
this.val = val;
}
}
public static void main(String[] args){
//接受输入
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] a = new int[n];
for(int i =0;i<n;i++){
a[i] = sc.nextInt();
}
//列出链表
LinkedNode head = list(a,n);
//删除指定节点 并返回输出
LinkedNode head2 = delete(head,n,m);
while(head2 != null){
System.out.print(head2.val+" ");
head2 = head2.next;
}
}
static LinkedNode list(int[] a,int num){
LinkedNode l1 = new LinkedNode(0);
LinkedNode head = l1;
for(int i = 0;i<num;i++){
LinkedNode tmp = new LinkedNode(a[i]);
head.next = tmp;
head = head.next;
}
return l1.next;
}
static LinkedNode delete(LinkedNode t,int n,int m){
if(m==1) return t.next;
LinkedNode head = t;
for(int i =1;i<n;i++){
if(i == (m-1)){
head.next = head.next.next;
}else{
head = head.next;
}
}
return t;
}
}
3.总结:
主要三个大的步骤:
接受输入
将输入生成链表
删除指定节点