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 + ")";
        }
    }
}


目录
相关文章
|
3月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
106 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
3月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
58 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
3月前
|
存储
[数据结构] -- 单链表
[数据结构] -- 单链表
32 1
|
3月前
|
存储 Java
数据结构第二篇【关于java线性表(顺序表)的基本操作】
数据结构第二篇【关于java线性表(顺序表)的基本操作】
51 6
|
3月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
31 3
|
3月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
32 0
LeetCode第二十四题(两两交换链表中的节点)
|
3月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
49 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
3月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
58 1
|
3月前
|
存储
【数据结构】——单链表实现
【数据结构】——单链表实现
|
3月前
|
存储
数据结构2——单链表
数据结构2——单链表
42 1
下一篇
开通oss服务