java数据结构21:按大小顺序建立单链表并按要求删除节点

21:按大小顺序建立单链表并按要求删除节点

总时间限制: 

1000ms

内存限制: 

32767kB

描述

输入的每一行是姓名和年龄。读入每个人的信息,按年龄从小到大建立一个单链表。

按示例格式输出这个单链表。

删除链表中所有年龄是偶数的节点,按示例格式输出剩下的所有节点。

要求:必须删除节点,不能只是跳过节点不输出。

输入

扫描二维码关注公众号,回复: 11357016 查看本文章

输入的每一行是以空格隔开的姓名和年龄。姓名少于20个字节。
输入以 END 结束。

输出

按示例格式输出这个单链表。每个人得信息输出在一对小括号之间,姓名和年龄以一个空格隔开,小括号后没有空格。

删除链表中所有年龄是偶数的节点,按示例格式输出剩下的所有节点。

样例输入

Emma 16
Emily 12
Madison 21
Isabella 22
Ava 15
END

样例输出

(Emily 12)(Ava 15)(Emma 16)(Madison 21)(Isabella 22)
(Ava 15)(Madison 21)

提示

1、必须删除节点,不能只是跳过节点不输出。
2、删除节点时不要忘了释放被删除节点的空间。
3、程序结束时不要忘了销毁链表,释放所有节点的空间。

实现代码如下:


import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

/**
 * @author baikunlong
 * @date 2020/6/22 19:10
 */
public class Main {
    public static void main(String[] args) {
        ArrayList<User> users = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String s = scanner.nextLine();
            if (s.equals("END")) {
                break;
            } else {
                String[] strings = s.split(" ");
                users.add(new User(strings[0], Integer.parseInt(strings[1])));
            }
        }
        users.sort(Comparator.comparingInt(o -> o.age));
        for (User u : users) {
            System.out.print(u.toString());
        }
        for (int i = 0; i < users.size(); i++) {
            if(users.get(i).age%2==0){
                users.remove(i);
                i--;
            }
        }
        System.out.println();
        for (User u : users) {
            System.out.print(u.toString());
        }
        users.clear();
    }

    static class User {
        String name;
        int age;

        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }

        @Override
        public String toString() {
            return "(" + name + " " + age + ")";
        }
    }
}

猜你喜欢

转载自blog.csdn.net/baikunlong/article/details/106930859