您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构课内实验报告(单链表)
数据结构实验报告题目:单链表院系名称:专业名称:班级:学生姓名:学号(8位):指导教师:陈燕设计起止时间:2014年10月29日~2014年11月04日一.题目要求编写一个单链表实现单链表的各种运算功能二.概要设计1.功能模块的调用关系图InitListDispListCreateListListLengthmainListEmptyDestroyListGetElemListInsertListDeleteLocateElem2.各个模块详细的功能描述。主函数main()初始化单链表函数InitList_L显示单链表内容函数DispList_L插入元素函数ListInsert_L删除元素函数ListDelete_L查找元素函数LocateList_L创建链表函数CreateList_L链表元素长度函数ListLength_L三.详细设计(主要函数的程序流程图)四.测试数据及运行结果1.正常测试数据和运行结果主函数main()说明一个单链表L初始化L建立L;显示L2.异常测试数据及运行结果五.调试情况,设计技巧及体会1.改进方案刚开始调试的时候老出现错误,经过不断看书,和同学讨论,不断改进自己的代码,虽然成功了,但是功能并不是很全面,进过改进,才改成功。2.体会熟能生巧,只有将单链表相关知识弄懂才能熟练的运用,对于代码出错,绝对不能急躁,要有耐心才能有清醒的头脑,将代码改好。六.代码#includestdio.h#includestdlib.h#definen10#definenull0typedefstructnode{intdata;structnode*next;}node;node*CreatLink(inta[]){node*q,*p,*h;inti;for(i=0;in;i++){p=(node*)malloc(sizeof(node));p-data=a[i];if(!i)h=p;elseq-next=p;q=p;}q-next=null;returnh;}voidDispLink(node*h){node*p;intsum=0;p=h;while(p){printf(%d\t,p-data);p=p-next;sum+=1;if(!(sum%5))printf(\n);}printf(\n);}node*DeleteLink(node*h,intx){node*q,*p;intsum=1;p=h;if(!(h-data-x)){h=p-next;printf(待删除结点位置为头结点!\n);free(p);returnh;}while(1){q=p;p=p-next;sum+=1;if(!(p-data-x)){q-next=p-next;printf(待删除结点位置为第%d个结点\n,sum);free(p);break;}if(!(sum-n)){printf(未找到可删除结点\n);break;}}returnh;}node*InsertLink(node*h,intins,intx){node*q,*p;intk=0;q=h;p=(node*)malloc(sizeof(node));p-data=x;if(!(k-ins)){p-next=h;h=p;printf(待插结点位置位于头节点之前\n);returnh;}while(1){q=q-next;k=k+1;if(!(k+1-ins)){p-next=q-next;q-next=p;printf(待插入结点位置位于第%d个结点之后\n,ins);break;}if(ins0||insk+1){printf(输入的待插入结点位置不正确\n);break;}}returnh;}intmain(){inti,x,ins;inta[n]={1,2,3,4,5,6,7,8,9,10};node*head;head=CreatLink(a);DispLink(head);printf(请输入需要删除的结点值x=);scanf(%d,&x);head=DeleteLink(head,x);DispLink(head);printf(请输入待插入结点x=);scanf(%d,&x);printf(请输入插入结点位置ins=);scanf(%d,&ins);head=InsertLink(head,ins,x);DispLink(head);return0;}
本文标题:数据结构课内实验报告(单链表)
链接地址:https://www.777doc.com/doc-5952329 .html