实验一 线性表操作
一、 实验目的
1.掌握用 C语言调试程序的基本方法。 2. 掌握结构体类型的基本用法。
3.掌握线性表的基本运算,包括顺序表和链表的基本操作,如插入、删除等。
二、 实验内容
1.利用顺序表完成一个班级的一个学期的所有课程的管理:能够增加、删除、修改学生的成绩记录。 2.建立一个单链表,同时对该链表实现指定位置的插入、删除操作。
三、 实验操作(在空白处填上合适的代码)
(一)利用顺序表完成一个班级学生课程成绩的简单管理
1、预定义以及顺序表结构类型的定义
(1)#define ListSize //根据需要自己设定一个班级能够容纳的最大学生数 (2)typedef struct Stu
{
int num;
char name[10]; float wuli; float shuxue;
float yingyu; }STUDENT; typedef struct List {
stu[ListSize];
int length;
}LIST;
2、建立班级的学生信息
void listcreate(LIST *Li,int m) //m为该班级的实际人数 { int i;
Li->length=0;
for(i=0;i printf(\printf(\ scanf(\输入第i个学生的学号 //存放学生的数组定义,静态分配空间 //记录班级实际学生个数 //存放班级学生信息的顺序表类型 //学生的学号 //学生的姓名 //物理成绩 //数学成绩 //英语成绩 //存放单个学生信息的结构体类型 } } printf(\ scanf(\输入第i个学生的姓名 printf(\ scanf(\输入第i个学生的物理成绩 printf(\ scanf(\输入第i个学生的数学成绩 printf(\ scanf(\输入第i个学生的英语成绩 Li->length++; //学生人数加1 3、插入一个学生信息 int listinsert(LIST *Li,int i) { int j; STUDENT e; if( ) { } printf(\无更多的存储空间!\\n\return 0; //测试存储空间是否被占满 //将学生插入到班级Li的第i个位置。 if ( ) return 0; else { //插入位置检验,如果错误就返回0退出程序。 printf(\请输入插入的学生信息:\ printf(\printf(\printf(\ printf(\printf(\ for(j= ;j>= ;j--) //从i位置到最后的元素依次往后移动 Li->stu[j+1]=Li->stu[j]; =e; Li->length++; //学生e放入到i位置 //学生实际人数加1 return 1; } } 4、删除一个学生信息 int listdel(LIST *Li,int i) { int j; if ( ) { return 0; else for(j= ;j< ;j++) //从删除位置后一个到最后的元素依次往前移动 Li->stu[j-1]=Li->stu[j]; Li->length--; //删除第i个学生的信息 //删除位置检验,如果错误就返回0退出程序。 return 1; } } 5、显示所有学生信息 void listdisplay(LIST L) { int i; printf(\班级学生信息如下:\\n\ for(i=0;i< ;i++) printf(\学号]s[姓名].2f[物理成绩].2f[数学成绩].2f[英语成绩]\\n\} 6、编写主函数main,要求测试以上所编写的listcreat、listinsert、listdel和listdisplay 自己设计主函数完成。 (二)利用单链表完成一个班级学生课程成绩的简单管理 1、单链表结构体类型的定义 typedef struct Stu { int num; //学生的学号 //学生的姓名 //物理成绩 //数学成绩 //英语成绩 //存放单个学生信息的结构体类型 char name[10]; float wuli; float shuxue; float yingyu; }STUDENT; typedef struct Snode { STUDENT data; //结点的值 struct Snode *link; //指向下一个结点的地址 }SNODE; 2、建立班级学生信息 SNODE *listcreate(int n) { int i; SNODE *head,*p,*q; if(n==0) return NULL; //如果要创建的是空表,返回NULL //n为该班级的实际人数 head=p=(SNODE *)malloc(sizeof(SNODE)); //动态建立第一个结点,head指针指向 printf(\ printf(\ //输入第1个学生的学号 printf(\ //输入第1个学生的姓名 printf(\//输入第1个学生的物理成绩 printf(\输入第1个学生的数学成绩 printf(\输入第1个学生的英语成绩 for(i=1;i q=(SNODE *)malloc(sizeof(SNODE)); printf(\ printf(\ printf(\ printf(\printf(\q->link=NULL; } }
相关推荐: