数据结构预习报告(一)

1、文件读取以及增删操作

public class TeamManager {
    //定义参赛队编号
    private String number;
    //定义参赛作品名称
    private String name;
    //定义参赛队所在学校
    private String school;
    //定义参赛作品类型
    private String category;
    //参赛者
    private String players;
    //指导老师
    private String coach;

public TeamManager(String number, String name, String school, String category, String players, String coach) {
        this.number = number;
        this.name = name;
        this.school = school;
        this.category = category;
        this.players = players;
        this.coach = coach;

读取文件的操作

public static void main(String[] args) {
        ArrayList<TeamManager> teams = new ArrayList<>();
        try {
            File file = new File("C:/Users/LENOVO/Documents/Tencent Files/461413102/FileRecv/team.txt");
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String line = reader.readLine();
            while (line != null) {
                String[] data = line.split(" ");
                TeamManager team = new TeamManager(data[0], data[1], data[2], data[3], data[4], data[5]);
                teams.add(team);
                line = reader.readLine();
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

2、根据参赛队所在学校查询参赛信息

public static ArrayList<Team> searchTeamBySchool(String school, ArrayList<Team> teams) {
        ArrayList<Team> result = new ArrayList<>();
        for (Team t : teams) {
            if (t.getSchool().equals(school)) {
                result.add(t);
            }
        }
        Collections.sort(result, new Comparator<Team>() {
            @Override
            public int compare(Team o1, Team o2) {
                return o1.getNumber() - o2.getNumber();
            }
        });
        return result;
    }

3、用二叉树查找学校,并计算ASL 

class TreeNode {
    String key;
    String value;
    TreeNode left;
    TreeNode right;

//查找结点
public String find(String key) {
        if (root == null) {
            return null;
        }

        TreeNode current = root;
        while (current != null) {
            if (current.key.equals(key)) {
                return current.value;
            } else if (key.compareTo(current.key) < 0) {
                current = current.left;
            } else {
                current = current.right;
            }
        }

        return null;
    }

    // 计算平均查找长度
    public double calculateASL() {
        int totalDepth = calculateDepth(root, 0);
        int n = countNodes(root);
        return (double) totalDepth / n ;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YL橙外

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值