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