用大学所学的C++数据结构写姓氏表(赵,钱,孙、李,周,吴,郑, 11. 王),编写顺序表存储,实现以下操作: 况 (1) 查找某个姓氏:孙 写顺 (2)插入一个姓氏:孟 (1 (3)删除一个姓氏:孟 (2) (4)打印表的长度,以及表中所有元素
时间: 2024-10-08 11:21:07 浏览: 31
在C++中,我们可以使用数组或动态向量来创建一个简单的顺序列表来存储这些姓氏。这里我将演示如何使用数组来实现:
```cpp
#include <iostream>
using namespace std;
const int MAX_NAME = 12; // 姓氏数组的最大容量
struct NameList {
string names[MAX_NAME];
int length;
};
// 初始化顺序表
void init(NameList& list) {
list.length = 0;
}
// 插入姓氏到表尾
void insert姓氏(NameList& list, const string& name) {
if (list.length < MAX_NAME) {
list.names[list.length] = name;
list.length++;
} else {
cout << "姓名表已满,无法插入更多名字!" << endl;
}
}
// 查找指定姓氏
bool find姓氏(const NameList& list, const string& name) {
for (int i = 0; i < list.length; i++) {
if (list.names[i] == name) {
return true;
}
}
return false;
}
// 删除指定姓氏
void remove姓氏(NameList& list, const string& name) {
for (int i = 0; i < list.length - 1; i++) { // 不检查最后一个元素,因为可能没找到
if (list.names[i] == name) {
for (int j = i; j < list.length - 1; j++) {
list.names[j] = list.names[j + 1]; // 移动后面的元素覆盖掉被删的位置
}
list.length--;
break;
}
}
}
// 打印顺序表信息
void printList(const NameList& list) {
cout << "姓名表长度: " << list.length << endl;
cout << "姓名表内容: ";
for (int i = 0; i < list.length; i++) {
cout << list.names[i] << ", ";
}
cout << endl;
}
int main() {
NameList list;
init(list);
// 插入姓氏
insert姓氏(list, "赵");
insert姓氏(list, "钱");
// ... (其余依次插入)
// 查找姓氏
bool found = find姓氏(list, "孙");
if (found) {
cout << "找到了姓孙的人。" << endl;
} else {
cout << "没有找到姓孙的人。" << endl;
}
// 删除姓氏
remove姓氏(list, "孟");
// 打印表信息
printList(list);
return 0;
}
```
阅读全文