资源描述:
《数据结构课内实验报告(单链表).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数据结构实验报告题目:单链表院系名称:专业名称:班级:学生姓名:学号(8位):指导教师:陈燕设计起止时间:2014年10月29日~2014年11月04日一.题目要求编写一个单链表实现单链表的各种运算功能二.概要设计1.功能模块的调用关系图InitList DispList CreateList ListLengthmain ListEmpty DestroyList GetElem ListInsert ListDelete LocateElem 2.各个模块详细的功能描述。主函数main() 初始化单链表函
2、数InitList_L 显示单链表内容函数DispList_L 插入元素函数ListInsert_L删除元素函数ListDelete_L 查找元素函数LocateList_L 创建链表函数CreateList_L 链表元素长度函数ListLength_L 三.详细设计(主要函数的程序流程图)主函数main()说明一个单链表 L初始化 L建立 L ;显示 L 四.测试数据及运行结果1.正常测试数据和运行结果2.异常测试数据及运行结果五.调试情况,设计技巧及体会1.改进方案刚开始调试的时候老出现错误,经过不断看
3、书,和同学讨论,不断改进自己的代码,虽然成功了,但是功能并不是很全面,进过改进,才改成功。2.体会熟能生巧,只有将单链表相关知识弄懂才能熟练的运用,对于代码出错,绝对不能急躁,要有耐心才能有清醒的头脑,将代码改好。六.代码#include#include#definen10#definenull0typedefstructnode{intdata;structnode*next;}node;node*CreatLink(inta[]){node*q,*p,*h;inti;
4、for(i=0;idata=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("%dt",p->data);p=p->next;sum+=1;if(!(sum%5))printf("");}printf("");}node*DeleteLink(
5、node*h,intx){node*q,*p;intsum=1;p=h;if(!(h->data-x)){h=p->next;printf("待删除结点位置为头结点!");free(p);returnh;}while(1){q=p;p=p->next;sum+=1;if(!(p->data-x)){q->next=p->next;printf("待删除结点位置为第%d个结点",sum);free(p);break;}if(!(sum-n)){printf("未找到可删除结点");break;}}r
6、eturnh;}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("待插结点位置位于头节点之前");returnh;}while(1){q=q->next;k=k+1;if(!(k+1-ins)){p->next=q->next;q->next=p;printf("待插入结点位置位于第%d个结点之
7、后",ins);break;}if(ins<0
8、
9、ins>k+1){printf("输入的待插入结点位置不正确");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);print
10、f("请输入待插入结点x=");scanf("%d",&x);printf("请输入插入结点位置ins=");scanf("%d",&ins);head=InsertLink(head,ins,x);DispLink(head);return0;}