顺序存储结构上实现线性表的基本操作,要求输入学号最后9位,分别实现顺序表的初始化、插入和删除功能C语言
时间: 2024-10-24 14:09:18 浏览: 15
在C语言中,顺序存储结构通常使用数组来实现线性表。下面是一个基础示例,演示了如何用数组实现一个学生信息表,其中包含学号(假设只考虑最后9位数字)作为关键字段,并实现初始化、插入和删除功能。
首先,我们创建一个结构体`Student`表示一个学生,包含学号成员:
```c
typedef struct {
int student_id; // 最后9位学号
} Student;
```
然后,我们可以定义一个动态大小的数组来存储这些学生,通过指针`Student*`指向数组元素:
```c
#define MAX_STUDENTS 100 // 预设最大学生数
Student students[MAX_STUDENTS]; // 学生表数组
int num_students = 0; // 当前学生数量
// 初始化函数
void initialize(int capacity) {
if (capacity > MAX_STUDENTS) {
printf("Capacity too large.\n");
return;
}
num_students = 0;
}
// 插入函数
void insertStudent(int new_id) {
if (num_students == MAX_STUDENTS) {
printf("Table is full.\n");
return;
}
students[num_students].student_id = new_id % 1e9; // 取模保证最后9位
num_students++;
}
// 删除指定位置的学生
void deleteStudent(int position) {
if (position < 0 || position >= num_students) {
printf("Invalid position.\n");
return;
}
for (int i = position; i < num_students - 1; i++) {
students[i] = students[i + 1];
}
num_students--;
}
```
在这个例子中,初始化函数用于清空数组并设置初始容量;插入函数用于添加新的学生,如果数组已满则不执行;删除函数接受位置索引,将该位置之后的所有元素向前移动一位,并减少学生总数。
阅读全文