HM080 后元前移做删除

HM080 后元前移做删除

HM080 后元前移做删除

来源: 第 80 集 通讯录管理系统-删除联系人-功能实现

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

已经能用 isExist 判断姓名在不在。现在封装 deletePerson,用地址传递接收通讯录。

删除步骤:

  1. 读入要删的姓名,调用 isExist。返回 \(-1\) 就输出 查无此人,不要乱动数组。
  2. 若返回值 \(ret \ge 0\),从下标 \(ret\) 起把后面的元素一个一个往前挪:先让 \(ret+1\) 覆盖 \(ret\),再让 \(ret+2\) 覆盖 \(ret+1\),直到最后一名有效联系人。循环写成 \(i\) 从 \(ret\) 到 \(mSize-2\),每次 personArray[i] = personArray[i+1]
  3. 不能先把最后一名往前甩。例如张三、李四、王五、赵六要删李四:必须先把王五盖到李四的位置,再把赵六盖到王五的位置;若先挪赵六,王五会丢。
  4. 挪完后 mSize--,这是逻辑删除:容量仍是 \(1000\),只是当前人数少一个。然后输出 删除成功

读入通讯录和若干次删除。每次删除后立刻输出提示;全部结束后再按当前顺序输出剩余联系人。若已空,输出 当前记录为空

输入格式

第一行一个整数 \(n\)(\(0 \le n \le 100\))。

接下来 \(n\) 行,每行:姓名、性别、年龄、电话、住址,均不含空白。

下一行一个整数 \(q\)(\(1 \le q \le 100\))。

接下来 \(q\) 行,每行一个要删除的姓名。

输出格式

对每次删除先输出一行 删除成功查无此人

然后输出剩余名单:每人一行,姓名、性别、年龄、电话、住址,空格分隔。若没有人了,输出一行 当前记录为空。行末换行。

样例

输入 #1

4
张三 1 18 111 海淀
李四 2 20 222 朝阳
王五 1 21 333 西城
赵六 1 22 444 东城
2
李四
孙七

输出 #1

删除成功
查无此人
张三 1 18 111 海淀
王五 1 21 333 西城
赵六 1 22 444 东城

输入 #2

1
张三 1 18 111 北京
1
张三

输出 #2

删除成功
当前记录为空

说明

样例 1 删李四后,王五、赵六依次前移,张三不动;再删不存在的孙七,名单不变。必须先查下标再从该位置向后覆盖,最后人数减一。只提示成功却不移动元素,显示时仍会看到被删的人。

信息

ID
1079
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者