资源描述:
《单链表的基本操作.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、实验目的1.掌握线性表的链式存贮结构及基本操作,深入了解链表的基本特性,以便在实际问题背景下灵活运用它们。2.巩固该存贮结构的构造方法,深入了解和灵活掌握链表的插入,删除等操作。二、实验环境1.硬件:每个学生需配备计算机一台。2.软件:windows操作系统+TurboC。三、实验要求1.定义一链表类型,并定带有头结点的单链表。2.将教材中链表的建立,初始化,插入,删除等函数实现。3.链表能够存储10名学生的基本信息(包括姓名、学号和成绩)。4.由主函数按照用户要求对各个链表操作访问。5.每次操作之前要有明确的说明,操作后要输出操
2、作结果。6.分析链表的插入,删除。四、实验内容1.完成链表操作用到的函数InitList(&L)操作结果:构造一个空线性表L。ListInsert(&L,i,e)初始条件:线性表L已存在,1<=i<=ListLength(L)+1。操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。ListDelete(&L,i,&e)初始条件:线性表L已存在且非空,1<=i<=ListLength(L)。操作结果:删除L中第i个数据元素,并用e返回其值,L的长度减1。2.在主函数中提示用户选择数据表操作,如:请选择对顺序表的操作,操作菜
3、单如下:**************************************************************初始化链表(C)链表中插入元素(I)链表中删除元素(D)**************************************************************作者:10网络单韩水玲五、源程序#include#include#include#defineLIST_INIT_SIZE1#defineLISTINCREMENT1st
4、ructstudent{intnum;charname[8];intscore;structstudent*next;};structstudent*p;structSqList{structstudent*elem;intlength;intlistsize;};voidhsl_print(){printf("t---------------------------------");}//输入信息inthsl_CreatSqList(structSqList*L){inti;intx;chara[10];printf("
5、t请输入学生个数:");scanf("%d",&x);printf("t请输入以下信息:学号,姓名,分数");L->elem=p=(structstudent*)malloc(LIST_INIT_SIZE*sizeof(structstudent));L->listsize=x;scanf("%d",&f->score);f->next=L->elem->next;L->elem->next=f;L->listsize=L->listsize+1;printf("t插入成功!");return1;}inth
6、sl_DeleteSqList(structSqList*L,intm){inti;if(m<1
7、
8、m>L->listsize){printf("t输入错误,请重新输入");return1;}L->elem=p;for(i=0;ielem=L->elem->next;L->elem->next=L->elem->next->next;L->listsize--;printf("t删除成功!");return1;}inthsl_OutputSqList(structSqList*L){in
9、ti;L->elem=p;printf("t所有学生成绩:");hsl_print();hsl_print();printf("t%-8s%-12s%-11s","学号","姓名","成绩");for(i=0;ilistsize;i++){printf("t%-8d%-12s%-11d",L->elem->num,L->elem->name,L->elem->score);L->elem=L->elem->next;hsl_print();}system("pause");return(1);for(i=0;
10、ilistsize;i++){printf("t第%d个学生分数",i+1);printf("t学号:");scanf("%d",&L->elem->num);printf("t姓名:");sc