c语言程序表实现

下面是一个C语言程序,用于实现顺序表的基本操作,包括初始化、添加元素、打印列表等功能。程序中使用了结构体和指针来管理动态数组,以存储学生信息。

 

```c

#include <stdio.h>

#include <stdlib.h>

 

#define MAX_SIZE 100 // 定义顺序表最大容量

 

// 定义学生结构体

typedef struct {

    int id; // 学号

    float score; // 成绩

} Student;

 

// 定义顺序表结构体

typedef struct {

    Student *data; // 学生数据数组指针

    int size; // 当前顺序表大小

    int capacity; // 顺序表容量

} SeqList;

 

// 初始化顺序表

void initList(SeqList *list) {

    list->data = (Student*)malloc(MAX_SIZE * sizeof(Student));

    if (list->data == NULL) {

        printf("Failed to allocate memory.\n");

        exit(EXIT_FAILURE);

    }

    list->size = 0;

    list->capacity = MAX_SIZE;

}

 

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

void addStudent(SeqList *list, Student student) {

    if (list->size >= list->capacity) {

        printf("The list is full. Cannot add more students.\n");

        return;

    }

    list->data[list->size++] = student;

}

 

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

void printList(SeqList list) {

    for (int i = 0; i < list.size; ++i) {

        printf("学号: %d, 成绩: %.2f\n", list.data[i].id, list.data[i].score);

    }

}

 

int main() {

    // 定义一个顺序表变量

    SeqList list;

    initList(&list);

 

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

    Student student1 = {100001, 85.5};

    Student student2 = {100002, 91.0};

    Student student3 = {100003, 78.0};

    addStudent(&list, student1);

    addStudent(&list, student2);

    addStudent(&list, student3);

 

    // 输出顺序表中所有数据元素的信息

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

    printList(list);

 

    // 释放顺序表内存

    free(list.data);

 

    return 0;

}

```

 

这个程序中定义了两个结构体类型:`Student` 和 `SeqList`。`Student` 结构体表示单个学生的信息,包含学号和成绩;`SeqList` 结构体表示顺序表,包含指向学生数据数组的指针、顺序表大小和顺序表容量。

 

`initList` 函数用于初始化顺序表,`addStudent` 函数用于向顺序表中添加学生记录,`printList` 函数用于打印顺序表中的所有学生记录。

 

在 `main` 函数中,我们首先初始化顺序表,然后向顺序表中添加三个学生记录,最后打印顺序表中的所有学生记录。最后,我们释放了顺序表的内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值