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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章