您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 桂林电子科技大学数据结构试验
附录Ⅰ实验报告的一般格式桂林电子科技大学数学与计算科学学院实验报告实验室:实验日期:年月日院(系)数学与计算科学学院年级、专业、班1200710222姓名李卫康成绩课程名称数据结构实验二实验项目名称链表的基本操作指导教师张慧敏一,实验目的(1)学会单链表结点的定义(2)掌握单链表的基本运算,熟悉对单链表的一些基本操作和具体函数的定义。(3)加深对链表的理解,逐步培养解决实际问题的编程能力。二,实验原理第一步:定义单链表的存储结构。第二步:编写单链表操作的具体函数定义。第三步:使用定义的单链表并调用单链表的一些操作,实现具体运算。具体函数的定义有:1)insert(L,i,x)在单链表的第i个元素之前插入一个新元素x.2)deletet(L,i)删除单链表的第i个元素。3)listprint(L)输出单链表。三,使用仪器,材料VisualC++四,实验内容与步骤五,实验过程原始记录(数据,图表,计算等)1、预习思考题调试好上述程序后,试着完成以下拓展内容:(1)定义一个逆置函数diverse(L),把链表进行逆置。在主程序中调用该函数,分析操作结果。#includestdio.h#includemalloc.h#defineNULL0#defineTRUE1#defineFALSE0typedefintelemtype;//定义一个链表typedefstructnode/*链表结点类型定义*/{elemtypedata;/*结点数据域*/structnode*next;/*结点的指针域*/}linklist;//创建链表linklist*creatlist()/*创建链表函数-以按下任意建开始创建,以输入字符'?'表示结束标志*/{charch;intx;linklist*head,*r,*p;p=(linklist*)malloc(sizeof(linklist));head=p;p-next=NULL;r=p;ch=getchar();while(ch!='?'){scanf(%d,&x);p=(linklist*)malloc(sizeof(linklist));p-data=x;p-next=NULL;r-next=p;r=r-next;ch=getchar();}return(head);}//输出链表voidprint(linklist*head)/*打印出链表head中各个结点的值*/{linklist*p;p=head-next;while(p!=NULL){printf(%d,p-data);p=p-next;}printf(\n);}//定义拟置单链表的函数voiddeverse(linklist*L){linklist*p=L-next;linklist*q;L-next=NULL;//把L看做空表while(p!=NULL){q=p-next;//q保存p的下一个节点p-next=L-next;L-next=p;p=q;//继续遍历}}voidmain()/*主函数*/{linklist*head;/*定义指向链表的指针head*/intx;inti,j;printf(请输入节点以及节点值以?结束\n);head=creatlist();printf(我们自己创建的链表如下:\n);print(head);deverse(head);printf(拟置后的链表为:\n);print(head);}(2)定义一个函数delsame(L),把链表中重复的元素删除掉,只保留一个。在主程序中调用该函数,分析操作结果。#includestdio.h#includemalloc.h#defineNULL0#defineTRUE1#defineFALSE0typedefintelemtype;//定义一个链表typedefstructnode/*链表结点类型定义*/{elemtypedata;/*结点数据域*/structnode*next;/*结点的指针域*/}linklist;//创建链表linklist*creatlist()/*创建链表函数-以按下任意建开始创建,以输入字符'?'表示结束标志*/{charch;intx;linklist*head,*r,*p;p=(linklist*)malloc(sizeof(linklist));head=p;p-next=NULL;r=p;ch=getchar();while(ch!='?'){scanf(%d,&x);p=(linklist*)malloc(sizeof(linklist));p-data=x;p-next=NULL;r-next=p;r=r-next;ch=getchar();}return(head);}//输出链表voidprint(linklist*head)/*打印出链表head中各个结点的值*/{linklist*p;p=head-next;while(p!=NULL){printf(%d,p-data);p=p-next;}printf(\n);}//定义一个函数把单链表中重复的元素删除voiddelsame(linklist*L){//定义变量linklist*p=L-next,*q,*afterq,*t;//遍历链表while(p!=NULL){q=p;//q指向pafterq=q-next;//afterq指向了q的next//内层循环查找与*q重复的节点while(afterq){if(afterq-data==p-data)//如果afterq的data等于了q的data则删除afterq节点{t=afterq-next;//t临时存放afterq.nextq-next=t;//释放free(afterq);afterq=t;}else{//q,afterq指向下一个节点q=afterq;afterq=afterq-next;}}//继续p=p-next;}}voidmain()/*主函数*/{linklist*head;/*定义指向链表的指针head*/intx;inti,j;printf(请输入节点以及节点值以?结束\n);head=creatlist();printf(我们自己创建的链表如下:\n);print(head);delsame(head);printf(删除重复元素后的链表:\n);print(head);}六,实验结果分析或总结在写第二个程序的时候一个小小的错误让我调试了好久才找出来,因此一定要细心。另外对比顺序表与链表的数组拟置,删除重复元素的差别,深刻理解链表!附录Ⅱ综合性、设计性实验报告格式桂林电子科技大学数学与计算科学学院综合性、设计性实验报告实验室:实验日期:年月日院(系)年级、专业、班姓名成绩课程名称实验项目名称指导教师教师评语教师签名:年月日一,实验目的二,实验原理三,使用仪器,材料四,实验内容与步骤五,实验过程原始记录(数据,图表,计算等)六,实验结果分析或总结
本文标题:桂林电子科技大学数据结构试验
链接地址:https://www.777doc.com/doc-3569817 .html