顺序表实现

下面是一个简单的顺序表实现,以及如何使用它来存储学生信息。请注意,`student`结构体需要包含至少两个成员,一个是`id`(学号)和另一个是`score`(成绩)。在下面的代码中,我将提供这些结构体和必要的功能来初始化、填充和输出顺序表中的数据。

 

```c

#include <stdio.h>

#include <string.h>

#include <math.h>

#include <stdlib.h>

 

#define MAXSIZE 10

 

// 定义数据元素类型

typedef struct {

    int id; // 学号

    float score; // 成绩

} student;

 

// 定义顺序表结构体

typedef struct {

    student *elem; // 指向动态分配的数组的指针

    int length; // 顺序表中当前元素的个数

    int listSize; // 顺序表的最大容量

} SqList;

 

// 初始化顺序表

void initList(SqList *L) {

    L->elem = (student*) malloc(MAXSIZE * sizeof(student));

    L->length = 0;

    L->listSize = MAXSIZE;

}

 

// 向顺序表中添加一个学生记录

void addStudent(SqList *L, student s) {

    if (L->length >= L->listSize) {

        printf("顺序表已满,无法添加新的学生记录。\n");

        return;

    }

    L->elem[L->length++] = s;

}

 

// 打印顺序表中的所有学生记录

void printList(SqList *L) {

    for (int i = 0; i < L->length; ++i) {

        printf("学号: %d, 成绩: %.2f\n", L->elem[i].id, L->elem[i].score);

    }

}

 

int main() {

    // 定义一个顺序表变量

    SqList list;

    initList(&list);

 

    // 初始化顺序表变量:分配10个存储空间

    for (int i = 0; i < 3; ++i) {

        student s = { 1000000 + i, 75.0 }; // 举例的学号和成绩

        addStudent(&list, s); // 添加学生记录到顺序表

    }

 

    // 输出顺序表中所有数据元素的信息(for循环实现)

    printf("所有学生记录如下:\n");

    printList(&list);

 

    // 释放动态分配的内存

    free(list.elem);

 

    return 0;

}

```

 

这段代码定义了一个`SqList`结构体和一个`student`结构体,分别用来存储学生记录的数组和单个学生的信息。我们定义了三个函数`initList`来初始化顺序表,`addStudent`来向顺序表中添加学生记录,以及`printList`来打印顺序表中的所有学生记录。

 

在`main`函数中,我们首先初始化顺序表并给它分配了最大容量为`MAXSIZE`的空间。然后,我们循环三次,每次循环都创建一个新的学生记录,并将其添加到顺序表中。最后,我们调用`printList`函数来打印出所有的学生记录,并释放了之前动态分配的内存。

 

请注意,这段代码假设`student`结构体只包含`id`和`score`两个成员。如果还有其他成员或需求,需要适当修改代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值