如何定义顺序表类型举例子并写出具体代码
时间: 2024-06-12 13:06:00 浏览: 105
顺序表是一种线性表,它的每个元素都存储在一段连续的内存空间中,并且每个元素的位置都可以通过下标来访问。
例如,我们可以定义一个顺序表类型来表示学生信息:
```c
#define MAX_SIZE 100 // 定义顺序表的最大长度
typedef struct {
char name[20];
int age;
char gender;
float score;
} Student; // 定义学生结构体
typedef struct {
Student data[MAX_SIZE]; // 存储学生数据的数组
int length; // 当前顺序表的长度
} SeqList; // 定义顺序表类型
// 初始化顺序表
void init(SeqList* list) {
list->length = 0;
}
// 在顺序表的指定位置插入一个元素
void insert(SeqList* list, int pos, Student stu) {
if (pos < 0 || pos > list->length || list->length >= MAX_SIZE) {
printf("插入位置不合法或顺序表已满\n");
return;
}
for (int i = list->length - 1; i >= pos; i--) {
list->data[i + 1] = list->data[i];
}
list->data[pos] = stu;
list->length++;
}
// 删除顺序表中指定位置的元素
void delete(SeqList* list, int pos) {
if (pos < 0 || pos >= list->length) {
printf("删除位置不合法\n");
return;
}
for (int i = pos; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
// 获取顺序表中指定位置的元素
Student get(SeqList* list, int pos) {
if (pos < 0 || pos >= list->length) {
printf("获取位置不合法\n");
exit(1);
}
return list->data[pos];
}
// 修改顺序表中指定位置的元素
void set(SeqList* list, int pos, Student stu) {
if (pos < 0 || pos >= list->length) {
printf("修改位置不合法\n");
return;
}
list->data[pos] = stu;
}
```
上面的代码定义了一个包含 `Student` 结构体的顺序表类型 `SeqList`,并实现了一些基本操作,如初始化、插入、删除、获取和修改元素。可以通过调用这些操作来对顺序表进行操作。
阅读全文