文档详情

数据结构大作业二.doc

发布:2017-02-02约7千字共13页下载文档
文本预览下载声明
“计算机软件技术基础”课程实验报告(二) 实验名称: 链表结构 班级_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
显示全部
相似文档