题解 | #从单向链表中删除指定值的节点#

从单向链表中删除指定值的节点

https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 单链表删结点
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] s=br.readLine().split(" ");
        int[] nums= new int[s.length-3];
        int N=Integer.parseInt(s[0]);
        int delete=Integer.parseInt(s[s.length-1]);
        int head=Integer.parseInt(s[1]);
        for (int i = 2; i < s.length-1; i++)
                nums[i-2] = Integer.parseInt(s[i]);
        SingleLinkedList linkedList= new SingleLinkedList(head);
        for (int i = 0; i < nums.length; i+=2) {
            linkedList.insert(nums[i],nums[i+1]);
        }
        linkedList.delete(delete);
        linkedList.display();
    }
}
class SingleLinkedList{
    public Node head;
    public int length;

    public SingleLinkedList(int val) {
        Node node=new Node(val);
        this.head = node;
        this.length = 1;
    }

    private class Node{
        private int val;
        private Node next;
        public Node(int val) {
            this.val = val;
        }
    }

    public void insert(int n1,int n2){
        Node node= new Node(n1);
        Node temp=head;
        for (int i = 0; i < length; i++) {
            if(temp.val==n2) {
                Node nextNode=temp.next;
                temp.next=node;
                node.next=nextNode;
                length++;
            }
            temp=temp.next;
        }
    }

    public int delete(int target){
        Node temp=head;
        Node pre=null;
        for (int i = 0; i < length-1; i++) {
            if(temp.val==target){
                if(i==0){
                    head=temp.next;
                    pre=temp;
                }else {
                    pre.next=temp.next;
                }
            }
            pre=temp;
            temp=temp.next;
        }
        length--;
        return 0;
    }
    public void display(){
        Node temp=head;
        StringBuilder sb= new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(temp.val+" ");
            temp=temp.next;
        }
        System.out.println(sb.toString());
    }

}

全部评论

相关推荐

牛客73617529...:无端端被你骂一句
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务