C语言实现学生成绩顺序表:插入、删除、查找操作详解

本文将介绍如何使用C语言实现一个学生成绩顺序表,并演示如何进行插入、删除、查找等操作。

顺序表结构

首先,我们定义一个结构体 Student 来表示单个学生的信息,包括学号、姓名和成绩:ctypedef struct { int id; char name[50]; float score;} Student;

然后,我们定义顺序表结构体 SeqList,包括存储学生信息的数组 data 和记录顺序表当前长度的变量 length:ctypedef struct { Student data[MAX_SIZE]; int length;} SeqList;

其中,MAX_SIZE 是一个常量,表示顺序表的最大容量。

初始化顺序表

在使用顺序表之前,我们需要对其进行初始化,将长度 length 设置为0:cvoid initList(SeqList *list) { list->length = 0;}

插入操作

插入操作是指在顺序表的指定位置插入一个学生信息。cvoid insert(SeqList *list, int pos, Student stu) { // 判断顺序表是否已满 if (list->length == MAX_SIZE) { printf('顺序表已满,无法插入! '); return; } // 判断插入位置是否合法 if (pos < 1 || pos > list->length + 1) { printf('插入位置非法! '); return; } // 将插入位置及之后的元素后移一位 for (int i = list->length; i >= pos; i--) { list->data[i] = list->data[i - 1]; } // 将新学生信息插入指定位置 list->data[pos - 1] = stu; // 顺序表长度加1 list->length++; printf('插入成功! ');}

删除操作

删除操作是指删除顺序表指定位置的学生信息。cvoid delete(SeqList *list, int pos) { // 判断删除位置是否合法 if (pos < 1 || pos > list->length) { printf('删除位置非法! '); return; } // 将删除位置之后的元素前移一位 for (int i = pos; i < list->length; i++) { list->data[i - 1] = list->data[i]; } // 顺序表长度减1 list->length--; printf('删除成功! ');}

查找操作

查找操作是指根据学号查找对应的学生信息,并返回其在顺序表中的位置。cint search(SeqList list, int id) { // 遍历顺序表 for (int i = 0; i < list.length; i++) { // 如果找到匹配的学号 if (list.data[i].id == id) { // 返回学生信息所在位置(从1开始) return i + 1; } } // 未找到匹配的学号,返回-1 return -1;}

输出顺序表

为了方便查看顺序表中的数据,我们定义一个函数 printList 来输出所有学生信息。cvoid printList(SeqList list) { printf('学生信息如下: '); for (int i = 0; i < list.length; i++) { printf('学号:%d 姓名:%s 成绩:%.2f ', list.data[i].id, list.data[i].name, list.data[i].score); }}

完整代码示例c#include <stdio.h>#include <stdlib.h>

#define MAX_SIZE 100

typedef struct { int id; char name[50]; float score;} Student;

typedef struct { Student data[MAX_SIZE]; int length;} SeqList;

// 初始化顺序表void initList(SeqList *list) { list->length = 0;}

// 在指定位置插入学生信息void insert(SeqList *list, int pos, Student stu) { // ... (代码与上面一致)}

// 删除指定位置的学生信息void delete(SeqList *list, int pos) { // ... (代码与上面一致)}

// 根据学号查找学生信息int search(SeqList list, int id) { // ... (代码与上面一致)}

// 输出学生信息void printList(SeqList list) { // ... (代码与上面一致)}

int main() { SeqList list; initList(&list);

int choice;    while (1) {        // ... (用户交互菜单,代码与上面一致)

    switch (choice) {            case 1: {                // ... (读取学生信息并插入顺序表,代码与上面一致)                break;            }            case 2: {                // ... (读取要删除的学生位置并删除,代码与上面一致)                break;            }            case 3: {                // ... (读取要查找的学号并查找,代码与上面一致)                break;            }            case 4: {                printList(list);                break;            }            default:                printf('无效的操作编号!

'); break; } }

return 0;}

总结

本文介绍了如何使用C语言实现学生成绩顺序表,并详细讲解了插入、删除、查找等操作的实现方法。通过学习本文,你应该对顺序表这种数据结构有了更深入的理解,并能够编写简单的顺序表程序。

C语言实现学生成绩顺序表:插入、删除、查找操作详解

原文地址: https://www.cveoy.top/t/topic/zpW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录