有关JAVA链表的一道小小题

weixin_45645057 2020-01-02 05:02:33
输入n(n>1)个正整数,每次将输入的整数插入到链表头部。-1表示输入结束。再输入一个正整数,在链表中查找该数据并删除对应的节点。要求输出进行删除操作后链表中所有节点的值。
【输入形式】
输入以空格分隔的n个整数,以-1结束输入,再输入一个要删除的整数。

【输出形式】
从链表第一个元素开始,输出链表中所有的节点值。以空格分隔。

【样例输入】
2 4 6 7 8 4 -1
2
【样例输出】
4 8 7 6 4
【样例说明】
输入以空格分隔的n个整数2 4 6 7 8 4, 以-1结束输入
然后输入2,删除2之后输出剩余整数。
...全文
155 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
timoncatdn 2020-01-05
  • 打赏
  • 举报
回复

import java.util.*;

class Node {

    private int val;

    private Node next;

    Node(int val, Node next) {
        this.val = val;
        this.next = next;
    }

    void setVal(int val) {
        this.val = val;
    }

    int getVal() {
        return val;
    }

    void setNext(Node next) {
        this.next = next;
    }

    Node getNext() {
        return next;
    }
}

class List {
    private Node head;

    private List(Node head) {
        this.head = head;
    }

    static List createFromScanner(Scanner sc) {
        Node head = new Node(0, null);
        Node last = head;
        for (int val = sc.nextInt(); val != -1; val = sc.nextInt()) {
            Node newNode = new Node(val, null);
            last.setNext(newNode);
            last = last.getNext();
        }
        return new List(head);
    }

    boolean delete(int val) {
        Node pre = head;
        Node node = head.getNext();
        while (node != null) {
            if (node.getVal() == val) {
                pre.setNext(node.getNext());
                return true;
            }
            pre = node;
            node = node.getNext();
        }
        return false;
    }

    @Override
    public String toString() {
        Node node = head.getNext();
        if (node == null) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        while (node != null) {
            sb.append(node.getVal());
            sb.append(' ');
            node = node.getNext();
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }
}

class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);

        List list = List.createFromScanner(sc);

        int toDelete = sc.nextInt();
        list.delete(toDelete);

        System.out.println(list);
    }
}
天花天花板 2020-01-02
  • 打赏
  • 举报
回复

import java.util.Scanner;
class ListNode {
    int val;
    ListNode next;

    public ListNode(int val) {
        this.val = val;
    }
}
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;
        ListNode top = null;
        while ((num = sc.nextInt()) != -1) {
            ListNode p = new ListNode(num);
            p.next = top;
            top = p;
        }
        int deleteNum = sc.nextInt();
        while (top != null) {
            if (top.val != deleteNum) {
                System.out.print(top.val + " ");
            }
            top = top.next;
        }
    }
}

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧