ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:78.22KB ,
资源ID:5951625      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5951625.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(创建链表和链表操作实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

创建链表和链表操作实验报告.docx

1、创建链表和链表操作实验报告创建链表和链表操作实验报告数据结构实验报告报告名称 创建链表和链表操作 专 业网络工程 班 级1001 学号20XX03120XX9 姓 名张剑 指导教师陈淑红李珍辉 黄哲20XX年5月 4 日、实验目的:掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算。二、 实验内容与基本要求:实验内容:1. 创建单链表2. 在链表上进行插入、删除操作;3 .设计一个程序,用两个单链表分别表示两个集合, 并求出这两个集合的并集。实验要求:1. 在上机前写出全部源程序; 2 .能在机器上正确运行程序;3 .用户界面友好;三、 概要设计:1

2、.单链表 的存储 结构: teypedef structLNode ElemType date;struct LNond *next; LNode *LinkList;2. 单链表的插入操作:Status ListTnsert-L(LinkLIst &L, int i, ElemType e )/再带头结点的单链线性表 L中的第i个位置之前插入元素 e P=l; j=0;While(p&jnext;+j;/寻找第i-1个结点if(!p|ji-1) return ERROR; /i 小小于 1 或者大 于表长 +1 s=(LinkList) malloc (sizeof(LNode); /生成新

3、结点 s-date=e; s-next=p-next; / 插入 L 中p-next=s; return ok;/ListTnsert L3. 单链表的删除操作:Status ListDelete-L(LinkLlst &L, int i, ElemType &e )/在带头结点单链线性表 L中,删除低i个元素,并e返回其值p=l; j=0;while(p-next&jnext; +j; if(!(p-next)|ji-1)return ERROR; / 删除位置不合理删除并释放结点q=p-n ext ; p-n ext=q-n ext; /e=q-date free(q); return O

4、K; /ListDelete-L4. 链表的合并操作:void MergeList-L(LinkList & La, LinkList & Lb,LinkList &Lc) / 已知单链表La和Lb的元素值/合并单链表La和Lb,得到新的单链表 Lc pa=La-next; pb=Lb-next;lc=pc=La; /用La的头结点作为Lc的 头结点 while(pa&pb) if(pa-datedate)pc-n ext =pa; pc=pa; pa=pa-n ext; else pc-n ext=pb;pc=pb;pb=pb-n ext; Pc-next=pa pa:pb; / 插入剩余段

5、 free(Lb); / 释放Lb头结点 /MergeList-L 四、详细设计:#include #include #include #include typedefint status;typedef char ElemType; typedef struct LnodeElemType data;/定义链表结点类型struct Lnode *next; Lnode,*Linklist;status initlist(Linklist *L) / 单链表的初始化 *L=(Lnode *)malloc(sizeof(Lnode); / 创建头结点 (*L)-next=NULL; return

6、 1; status Createlist(Linklist L) Lnode *p,*q;int i,j=1,n;ElemType m,M; q=L;请输入你要输入单链中元素的个数np=(Lnode *)malloc(sizeof(Lnode);请输入个元素: scanf(p-n ext=q-n ext;j+; return 1; status Listinsert(Linklist int j=0;输入错误!n return0; s=(Lnode *)malloc(sizeof(Lnode); s-data=e;/创建自己规定长度的单链表 /回车缓冲区/回车缓冲区 /向单链表指定位置插入一

7、个元素s-next=p-next; p-next=s; return 1; status Listdelete(Linklist L,int i,ElemType *e) /删除单链表指定位置的元素,返回删除后的。链表元素 Lnode *p,*q; in t j=0; p=L;while(p-next&jnext; j+; 输入错误!nreturn 0; q=p-next;p-n ext=q-n ext; *e=q-data; free(q); retu rn1; void print(Linklist L) /输出单链表中的元素Linklist p; p=L-next;输出单链表:n whi

8、le(p!=NULL)pri ntf( p=p-n ext; printf( struct Lnode * inter_link(struct Lnode * chainl,int a, struct Lnode * chain2, int b) / 单链表的合并 int temp;struct Lnode *head, *p1, *p2, *p3; / 判断 a, b大小并合并if (a = b) head =pl =chainl;p2 =chain2;else head =pl =chain2;p2 =chainl;temp =a, a=b, b = temp;p3 = head;whil

9、e (p2 != NULL) pl = p1- n ext; p3-n ext = p2; p3 = p2;p2 = p2-n ext; p3-n ext = p1; p3 = p1; return head; main int i,n,a,b,h;struct Lnode*p1,*p2; ElemType e;请输入创建的链表的个数: scanf(switch(n) case 1: Linklist L; initlist (&L);/* 创建链表 */ Createlist(L); print(L);/*插入元素*/请输入需要插入元素的值和位置nListinsert(L,i,e);请输入需

10、要插入元素的值和位置scanf(print(L);print(L);n scanf(Listinsert(L,i,e);/*删除元素*/请输入要删除的元素的位置 : scanf(Listdelete(L,i, &e); print(L);被删除元素为:ldn ;break; case 2:Createlist(H); print(H);L = inter_link(L, a, H, b);合并后的链表:n : print(L); ;break; default:printf( 五、调试分析及测试结果: 测试数据:1. ;2. 在5之前插入4, 7,并删除11求集合1 , 12 , 8, 6,

11、4, 9和2 , 5, 12 , 7 , 4的并集测试结果及分析:1. 运行程序,首先进入选择界面,选择输入需要创建的链表数为1个,输入单链表中的 元素个数为六个。按照操 作要求一次输入六个元素 3,9 , 5,6 , 11,8。按回车键结束, 此时程序输出单链表,单链表创建成功。图1:单链表的创建与输出2. 当程序弹出“请输入需要插入元素的值和位置时”执行单链表的插入操作。 按要求输入需要4,插入元素的值“ 4”和元素的位置“ 3”,按回车结束,重新输出单链表,插入 成功。图2:单链表的插入操作 3.进行删除操作,根据提示输 入删除元素的位置“ 7”,输出单链表后,第七个语速消失,元素删除成

12、功。图3:单链表的删除操作4.单链表的合并:再一次运行程序,选择需要创建链表 的个数为2个。按照提示一次输入两个单链表的元素个数和 元素值;按回车键结束,此时进行两个单链表的合并操作, 输入合并后的链表。图4:链表的合并六、实验心得及经验教训:于c语言没学好,刚开始做实验时感到无从下手,根本 不知道怎样去写源代码。后来通过参考书籍和上网查阅资 料,依样画葫芦的弄出了代码,但在程序上一编译,出现了 很多错误,根本就不能运行。在编译器的中找到出错的地方, 一个个的去改正,有些是于粗心造成的,有些是因为没有定 义造成的。最常见的就是漏掉“;”和大小写不分。但有些 程序改了好几遍的都该不过来,这就需要

13、不断的去尝试, again and again , 虽然心里会觉得很烦,但改出来,就会有一种成就感,并非得不偿失。通过本次实验,我知道了写 程序是一个循序渐进的过程,并不能一口就吃一个胖子;其 次,还要又足够的耐心。 当然,扎实的专业知识是少不了的, 因此,上课要认真听讲,课外要花点时间巩固提高。这样, 做实验写程序时就不会手忙脚乱!数据结构实验报告报告名称 创建链表和链表操作 专 业网络工程 班 级1001 学号20XX03120XX9 姓 名张剑 指导教师陈淑红李珍辉 黄哲20XX年5月 4 日、实验目的:掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结

14、构上的运算。二、 实验内容与基本要求:实验内容:1. 创建单链表2. 在链表上进行插入、删除操作;3 .设计一个程序,用两个单链表分别表示两个集合, 并求出这两个集合的并集。实验要求:1. 在上机前写出全部源程序; 2 .能在机器上正确运行程序;3 .用户界面友好;三、 概要设计:1.单链表 的存储 结构: teypedef struct LNode ElemType date;struct LNond *next; LNode *LinkList;2. 单链表的插入操作:Status ListTnsert-L(LinkLlst &L, int i, ElemType e )/再带头结点的单链

15、线性表 L中的第i个位置之前插入元素 e P=l; j=0;While(p&jnext;+j;/寻找第i-1个结点if(!p|ji-1) return ERROR; /i 小小于 1 或者大 于表长 +1 s=(LinkList) malloc (sizeof(LNode); /生成新结点 s-date=e; s-next=p-next; / 插入 L 中p-next=s; return ok;/ListTnsert L3. 单链表的删除操作:Status ListDelete-L(LinkLIst &L, int i, ElemType &e )/在带头结点单链线性表 L中,删除低i个元素,

16、并e返回其值p=l; j=0;while(p-next&jnext; +j; 删除并释放结点if(!(p-next)|ji-1) return ERROR; / 删除位置不合理q=p-n ext ; p-n ext=q-n ext; / /ListDelete-L4. 链表的合并操作:void MergeList-L(LinkList & La, LinkList & Lb,LinkList &Lc) / 已知单链表La和Lb的元素值/合并单链表La和Lb,得到新的单链表 Lc pa=La-next; pb=Lb-next;lc=pc=La; /用La的头结点作为Lc的 头结点 while(p

17、a&pb) if(pa-datedate)pc-n ext =pa; pc=pa; pa=pa-n ext; else pc-n ext=pb;pc=pb;pb=pb-n ext; Pc-next=pa pa:pb; / 插入剩余段 free(Lb); / 释放Lb头结点 /MergeList-L 四、详细设计:#include #include #include #include typedefint status;typedef char ElemType; typedef struct LnodeElemType data;/定义链表结点类型struct Lnode *next;Lnod

18、e,*Linklist;status initlist(Linklist *L)/单链表的初始化 *L=(Lnode *)malloc(sizeof(Lnode); /创建头结点 (*L)-next=NULL;return 1;Lnode *p,*q;status Createlist(Linklist L) int i,j=1,n;ElemType m,M; q=L;请输入你要输入单链中元素的个数nscanf( p-data=M;q-n ext=p; q=p;L,int i,ElemType e)+j; Lnode *p=L,*s; while(p&jnext;p=(Lnode *)mall

19、oc(sizeof(Lnode);请输入个元素: scanf(p-n ext=q-n ext;j+; return 1; status Listinsert(Linklist int j=0;输入错误!n return0; s=(Lnode *)malloc(sizeof(Lnode); s-data=e;/创建自己规定长度的单链表 /回车缓冲区/回车缓冲区 /向单链表指定位置插入一个元素 s-next=p-next; p-next=s; return 1; status Listdelete(Linklist L,int i,ElemType *e) /删除单链表指定位置的元素,返回删除后的

20、。链表元素 Lnode *p,*q; in t j=0; p=L;while(p-next&jnext;j+; 输入错误!nreturn 0; q=p-next;p-n ext=q-n ext; *e=q-data; free(q); retu rn1; void print(Linklist L) /输出单链表中的元素Linklist p; p=L-next;输出单链表:n while(p!=NULL)pri ntf( p=p-n ext; printf( struct Lnode * inter_link(struct Lnode * chainl,int a, struct Lnode * chain2, int b) / 单链表的合并 int temp;struct Lnode *head, *p1, *p2, *p3; / 判断 a, b大小并合并 if (a = b) head = pl = chainl;p2 = chain2;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1