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