题目

综合:通讯录(增删查,固定容量数组版)

思路

结构体数组存姓名电话,菜单 1 追加到 count 2 按名查找 3 删除后前移或标记无效;容量满时拒绝添加,字符串比较用自写或 strcmp。

解题分析

固定容量数组版通讯录:末尾下标 n 表示已有条数,添加在尾部写入,查找线性扫描姓名,删除可把最后一条搬到空洞(或整体前移)。数据量 20 以内,O(n) 查找可接受。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String[][] book = new String[20][2]; int n = 0;
        if (true) {
            book[n][0] = "Amy"; book[n][1] = "10001"; n++;
        }
        { String key = "Amy"; boolean found = false;
            for (int i = 0; i < n; i++) if (book[i][0].equals(key)) {
                System.out.println(book[i][0] + " " + book[i][1]); found = true; break;
            }
            if (!found) System.out.println("not found");
        }
        { String key = "Amy";
            for (int i = 0; i < n; i++) if (book[i][0].equals(key)) {
                book[i][0] = book[n-1][0]; book[i][1] = book[n-1][1]; n--; break;
            }
        }
    }
}

运行示例

输出:

Amy 10001
not found