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

简介: 输入的每一行是姓名和年龄。读入每个人的信息,按年龄从小到大建立一个单链表。按示例格式输出这个单链表。删除链表中所有年龄是偶数的节点,按示例格式输出剩下的所有节点。要求:必须删除节点,不能只是跳过节点不输出。

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


总时间限制:


1000ms



内存限制:


32767kB


描述


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


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


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


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


输入


输入的每一行是以空格隔开的姓名和年龄。姓名少于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 + ")";
        }
    }
}


目录
相关文章
|
5天前
|
存储 缓存 安全
Java中的数据结构:选择与优化
Java中的数据结构:选择与优化
|
4天前
|
存储 算法 Java
解密Java中的运行时数据结构
解密Java中的运行时数据结构
|
5天前
|
存储 算法 Java
老程序员分享:java之数据结构【入门篇】
老程序员分享:java之数据结构【入门篇】
|
6天前
|
算法 Java
Java数据结构与算法:双向链表
Java数据结构与算法:双向链表
|
6天前
|
算法 Java
Java数据结构与算法:循环链表
Java数据结构与算法:循环链表
|
6天前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
|
6天前
|
算法
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
|
6天前
|
算法 程序员 数据处理
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
|
6天前
|
算法
【数据结构与算法 经典例题】随机链表的复制(图文详解)
【数据结构与算法 经典例题】随机链表的复制(图文详解)
|
6天前
|
算法 C语言
【数据结构与算法 经典例题】链表的回文结构(图文详解)
【数据结构与算法 经典例题】链表的回文结构(图文详解)