线性表数据元素为int类型,表示学生成绩,编写顺序表定义、初始化、插入、删除、查找:
时间: 2024-09-10 15:07:38 浏览: 42
线性表是一种基础的数据结构,其中每个数据元素都是`int`类型的学生成绩。我们可以定义一个顺序表(也称数组列表)来存储这些信息:
```c++
// 定义顺序表结构体
typedef struct {
int* data; // 学生成绩的动态数组
int size; // 当前元素个数
int capacity; // 数组的最大容量
} ScoreList;
// 初始化顺序表
void init_ScoreList(ScoreList& list) {
list.data = new int[capacity];
list.size = 0;
list.capacity = 10; // 默认初始容量为10
}
// 插入操作
void insert_Score(ScoreList& list, int score) {
if (list.size == list.capacity) {
// 扩容处理
list.capacity *= 2;
int* newData = new int[list.capacity];
for (int i = 0; i < list.size; i++) {
newData[i] = list.data[i];
}
delete[] list.data;
list.data = newData;
}
list.data[list.size++] = score;
}
// 删除操作(假设我们按值删除)
void remove_Score(ScoreList& list, int targetScore) {
for (int i = 0; i < list.size - 1; i++) {
if (list.data[i] == targetScore) {
memmove(&list.data[i], &list.data[i + 1], sizeof(int) * (list.size - i - 1));
list.size--;
return;
}
}
}
// 查找操作
int find_Score(const ScoreList& list, int targetScore) const {
for (int i = 0; i < list.size; i++) {
if (list.data[i] == targetScore) {
return i;
}
}
return -1; // 如果找不到,返回-1表示不存在
}
// 关闭顺序表(释放内存)
void close_ScoreList(ScoreList& list) {
delete[] list.data;
list.data = nullptr;
list.size = list.capacity = 0;
}
// 相关问题--
1. 如何遍历顺序表中的所有成绩?
2. 如何优化删除操作的效率?
3. 顺序表适合什么样的场景?
阅读全文