顺序表的建立与基本操作:建立课程信息的顺序表:分别按课程编号1 8 10 5 2 7 9 3 6 4 的顺序,应用插入算法插入对应的位置

该博客展示了使用C语言编写的课程管理程序,包括初始化顺序表、按编号插入课程、删除课程、查找课程和打印课程列表等功能。通过示例代码,演示了如何操作结构体数组来管理课程数据。

定义头文件

#include <stdio.h>
#include <string.h>

#define maxLength 100 // 表最大长度

//定义课程结构体

typedef struct {
int code;//课程编号
char name[50];//课程名称
int weight;//课程权重
} Course;

Course data[maxLength];//data 为存放课程数据的数组
int curlen;//实际表长

//初始化顺序表
void initList() {
curlen = 0;
}

//按课程编号有序输入新数据元素 crs

int insertCourse(Course crs) {
int i = 0;
int n;
if (curlen >= maxLength) {
return 0;
}
for (i = 0; i < curlen; ++i) {
if (data[i].code > crs.code) {
break;
}
}
if (i < curlen) {
for (n = curlen - 1; n >= 1; n–) {
data[n + 1] = data[n];
}
}

//插入新结点 crs

data[i] = crs;
curlen++;
return 1;

}

//删除课程

int deleteCourse(int i) {
int n;
//删除位置正确与否判断
if (i < 1 || i > curlen) {
printf(“删除第%d个位置数据元素有误!\n”, i);
return 0;
}
printf(“删除第%d个位置数据元素成功,被删除的课程为:%s\n”, i, data[i - 1].name);
for (n = i; n < curlen; n++) {
data[n - 1] = data[n];
}
curlen–;
return 1;
}

//根据名称查找课程

void findCourse(char *clsname){
Course *crs = NULL;
int i=0;
for(i=0;i<curlen;i++){
if(strcmp(data[i].name,clsname)==0){
printf(“code=%d,name=%s,weight=%d \n”,data[i].code,data[i].name,data[i].weight);
return;
}
}
printf(“当前未找到%s\n”,clsname);
}

//打印列表信息

void printList(){
int i;
printf(“code name wight \n”);
for(i=0;i<curlen;i++){
printf("%d %s %d \n",data[i].code,data[i].name,data[i].weight);

}

}

初始化顺序表

int main() {
//初始化顺序表
initList();
//按课程编号输入
Course c1 = {1, “程序设计”, 9};
insertCourse(c1);
Course c2 = {2, “离散数学”, 2};
insertCourse(c2);
Course c3 = {3, “数据结构”, 8};
insertCourse(c3);
Course c4 = {4, “汇编语言”, 1};
insertCourse(c4);
Course c5 = {5, “计算机算法”, 7};
insertCourse(c5);
Course c6 = {6, “微机原理”, 3};
insertCourse(c6);
Course c7 = {7, “编译原理”, 4};
insertCourse(c7);
Course c8 = {8, “操作系统”, 6};
insertCourse(c8);
Course c9 = {9, “高等数学”, 5};
insertCourse(c9);
Course c10 = {10, “线性代数”, 5};
insertCourse(c10);
//按图顺序输出顺序表信息
printf(“插入元素后,按图的顺序输出顺序表信息:\n”);
printList();
printf("--------------------------\n");
//依次删除第7个和第10个元素,并显示删除后的顺序表
Course dc7;
Course dc10;
deleteCourse(7);
deleteCourse(10);
printf(“依次删除元素后,显示删除后的顺序表”);
printList();
printf("--------------------------\n");
//应用查找算法,依次查找课程“编译原理”和线性代数,并显示
printf(“查找《编译原理》课程\n”);
findCourse(“编译原理”);
printf("--------------------------\n");
printf(“查找《线性代数》课程\n”);
findCourse(“线性代数”);
printf("--------------------------\n");
return 0;
}

下面是源代码的相关原图展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值