题目
综合:通讯录(增删查,固定容量数组版)
思路
结构体数组存姓名电话,菜单 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