#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;
}