数据结构课程单链表实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据结构实验报告郑州轻工业学院郑州轻工业学院《数据结构》课程实验实验报告题目:单链表表的基本操作及c语言实现专业:信息管理与信息系统班级:11-01姓名:高博文完成日期:2013/5/23数据结构实验报告郑州轻工业学院一、试验内容用c语言实现单链表的建立插入删除查找,合并等内容二、试验目的掌握链表的基本操作:插入、删除、查找等运算,能够灵活应用链表这种数据结构,深入对链表链式结构的了解。三.源程序代码#includestdio.h#includestdlib.htypedefintElemtype;typedefintStatus;typedefstructnode//定义存储节点{intdata;//数据域structnode*next;//结构体指针}*linklist,node;//结构体变量,结构体名称linklistcreat(intn)//创建单链表{linklisthead,r,p;//定义头指针r,p,指针intx,i;head=(node*)malloc(sizeof(node));//生成头结点r=head;//r指向头结点printf(输入数字:\n);for(i=n;i0;i--)//for循环用于生成第一个节点并读入数据{scanf(%d,&x);p=(node*)malloc(sizeof(node));p-data=x;//读入第一个节点的数据r-next=p;//把第一个节点连在头结点的后面r=p;//循环以便于生成第二个节点}r-next=0;//生成链表后的断开符returnhead;//返回头指针}voidoutput(linklisthead)//输出链表{linklistp;p=head-next;do{数据结构实验报告郑州轻工业学院printf(%3d,p-data);p=p-next;}while(p);printf(\n);}Statusinsert(linklist&l,inti,Elemtypee)//插入操作{intj=0;linklistp=l,s;while(ji-1&&p){p=p-next;++j;}if(!p||ji-1)return-1;else{s=(node*)malloc(sizeof(node));s-data=e;s-next=p-next;p-next=s;return1;}}Statusdelect(linklist&l,inti,Elemtype&e)//删除操作{intj=0;linklistp=l,q;while(ji-1&&p-next){p=p-next;++j;}if(!p-next||ji-1)return-1;else{数据结构实验报告郑州轻工业学院q=p-next;p-next=q-next;e=q-data;free(q);return1;}}voidcombine(linklistla,linklistlb)//合并单链表{node*pa,*pb,*pc;linklistlc;pa=la-next;pb=lb-next;lc=pc=la;while(pa&&pb){if(pa-data=pb-data){pc-next=pa;pc=pa;pa=pa-next;}else{pc-next=pb;pc=pb;pb=pb-next;}}pc-next=pa?pa:pb;free(lb);}StatusGetElem(linklistl,inti,Elemtype&e)//查找操作{linklistp;intj;p=l-next;j=1;while(p&&ji){p=p-next;++j;}if(!p||ji)return-2;e=p-data;returne;数据结构实验报告郑州轻工业学院}voidmain(){linklistla,lb;intn;inti,j;Elemtypee;printf(请输入第一个链表:\n);printf(输入链表元素的个数:\n);scanf(%d,&n);la=creat(n);printf(输出链表:\n);output(la);printf(请输入要查找元素的位置:\n);scanf(%d,&i);j=GetElem(la,i,e);printf(所要查找的元素是%d\n,j);printf(请输入插入位置和元素:\n);scanf(%d%d,&i,&e);insert(la,i,e);printf(插入后的链表:\n);output(la);printf(请输入要删除的位置:\n);scanf(%d,&i);delect(la,i,e);printf(删除的那个元素是:%d\n,e);printf(输出删除后的顺序表:\n);output(la);printf(请输入第一个非递减链表:\n);printf(输入链表元素的个数:\n);scanf(%d,&n);la=creat(n);printf(输出链表:\n);output(la);printf(请输入第二个非递减链表:\n);printf(输入链表元素的个数:\n);scanf(%d,&n);数据结构实验报告郑州轻工业学院lb=creat(n);printf(输出链表:\n);output(lb);combine(la,lb);printf(输出合并后的链表:\n);output(la);}运行结果如下:数据结构实验报告郑州轻工业学院六、结果分析与思考关于单链表的建立要比顺序表难懂,单链表的建立有头插法和尾插法两种,我选用的是尾插法,尾插法较之头插法更为简单和使用,一定要熟练使用。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功