数据结构大作业二.doc
文本预览下载声明
“计算机软件技术基础”课程实验报告(二)
实验名称: 链表结构
班级_390712_ 姓名_董晶晶_ 学 实验日期:10_11_14
实验机时:3 学时 实验成绩:
-------------------------------------------------------------------------------
实验目的:
学习线性表的链式存储结构,掌握链表结构上各种操作的实现;
进一步提高程序调试能力。
实验内容:
设计一程序,要求:输入某个学生“软件技术基础”课的成绩(学号、姓名、成绩);删除某个学生的信息;分段统计优、良、中、及格、不及格各级别的学生人数。(要求:分别用单链表和双链表保存输入的学生成绩信息)
程序及注释:
单链表)
# include stdio.h
# includemalloc.h
struct stu
{struct stu *next; /*next为指向struct student 类型的指针变量*/
int num;
float grade;
char name[20];
}; /*定义一个单链表*/
void main()
{void FIND(struct stu *a,int b); /*对被调用函数FIND的声明,形参:结构体指针a、整型b*/
void DEL(struct stu *a,int b,struct stu **head);/*对被调用函数DEL的声明,形参:结构体指针a、整型b、双指针head*/
int m , i , w; /*定义整型变量m、i、w*/
int r[5]={0}; /*定义长为5的一维整型数组并赋初值*/
struct stu *list,*p,*q,**head; /*定义结构体指针变量*list,*p,*q,**head*/
list=NULL; /*list指针域置空*/
head=list; /*head与list同时指向链表表头*/
printf(Insert the total number of students:\n);
scanf(%d,m);
for (i=1; i=m; i++) /*获取数据元素*/
{p= (struct stu *) malloc (sizeof (stu)); /*声请一个新的链接点*/
printf(\nPlease insert the %d student’s NO.\n,i);
scanf(%d,p-num);
printf(Name:\n);
scanf(%s,p-name);
printf(:);
scanf(%f,p-grade);
w=(p-grade)/10;
switch(w) /*通过switch语句进行成绩统计*/
{case 10:r[0]++;continue;
case 9:r[0]++; continue;
case 8:r[1]++; continue;
case 7:r[2]++; continue;
case 6:r[3]++; continue;
default: r[4]++;
}
p-next=NULL; /*将取得的数据元素的数据信息送新结点的数据域同时将指针域置NULL*/
if (list==NULL)
list=p;
else
q-next=p; /*将新结点链接在链表的尾部*/
q=p; /*指针变量q总指向链表的末尾*/
}
printf(The results :\n:%d\n:%d\n:%d\n:%d\n:%d\n ,r[0],r[1],r[2],r[3],r[4]);
printf(\n);
scanf(%d,m);
FIND(list,m); /*调用函数FIND,实参为指向链表表头的结构体指针变量list 和被查找学生学号为指针类型的m*/
printf(Insert the number of the student to delete\n);
scanf(%d,m);
DEL(list,m,head); /*/*调用函数DEL,实参为指向链表表头的结构体指针变量list、head 和被查找学生学号为指针类型的m*/
printf(Insert the number of the student that deleted just now:\n);
scanf(%d,m);
FIND
显示全部