C语言实现学生成绩顺序表:插入、删除、查找操作详解
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语言实现学生成绩顺序表,并详细讲解了插入、删除、查找等操作的实现方法。通过学习本文,你应该对顺序表这种数据结构有了更深入的理解,并能够编写简单的顺序表程序。
原文地址: https://www.cveoy.top/t/topic/zpW 著作权归作者所有。请勿转载和采集!