版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
链表线性表实验一线性表线性表是最简单、最常用的基本数据结构,在实际问题中有着广泛的应用。通过本次的验证实验,巩固对线性表逻辑结构的理解,掌握线性表的存储结构及基本操作的实现,为应用线性表解决实际问题奠定良好的基础。通过本章的设计实验和综合实验,进一步培养以线性表作为数据结构解决实际问题的应用能力。单链表操作验证1.实验目的⑴掌握线性表的链接存储结构;⑵验证单链表及其基本操作的实现;⑶进一步掌握数据结构及算法的程序实现的基本方法。2.实验内容用C语言或其它高级程序设计语言验证以下基本操作:⑴用头插法(或尾插法)建立带头结点的单链表;⑵对已建立的单链表实现插入、删除等基本操作。3.实现提示首先,将单链表中的结点定义为如下结构类型:#include<stdio.h>#include<stdlib.h>#defineOK1#defineERROR0#defineOVERFLOW-1#defineTRUE1#defineFALSE0typedefintStatus;typedefintElemType;typedefstructLNode{ ElemTypedata; structLNode*next;}LNode,*LinkList;用头插法(或尾插法)建立单链表。算法参考课本。最后,对所建立的单链表设计实现插入、删除、查找、输出等基本操作的算法。在上述代码基础上,实现一元多项式的相加。选做:在上述代码基础上,实现一元多项式的相乘。4、实验过程中碰到的问题及解决方法链表输出的问题 刚开始输出链表的过程中出现了乱码;对于链表的建立,和指针的使用没有深入理解;慢慢的在了解原理后,才成功。一元多项式相加中的问题 判断多项式终止条件,刚开始使用输入系数为零作为终止条件,导致在La链表录完后接Lb的过程中出现了乱码,原因是在La结束时最后一项系数为0;指数不定,本想在Add函数中加入判断条件;结果程序不断停止运行,后来换做手动限制项数。程序运行成功。 多项式输出时,我在开头多输出一个0;不影响结果,也不会出现多出一个加号的问题。5、程序(注意必要的代码部分加注释)链表的基础操作#include<stdio.h>#include<stdlib.h>#defineOK1#defineERROR0#defineOVERFLOW-1#defineTRUE1#defineFALSE0typedefintStatus;typedefintElemType;typedefstructLNode{ ElemTypedata; structLNode*next;}LNode,*LinkList;//头插法建立链表voidCreatList(LinkList&L,intn){ LinkListp,q; inti; L=(LinkList)malloc(sizeof(LNode)); p=q=(LinkList)malloc(sizeof(LNode)); for(i=0;i<n;i++) { if(i==0)L->next=p; elseq->next=p; q=p; scanf("%d",&p->data); p=(LinkList)malloc(sizeof(LNode)); } q->next=NULL;}//尾插法建立链表voidCreatList1(LinkList&L,intn){ inti; LinkListp; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=0;i<n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=L->next; L->next=p; }}//输出整个链表voidPrintList(LinkListL){ LinkListp; p=L->next; while(p!=NULL) { printf("%-2d",p->data); p=p->next; } }//获取链表元素StatusGetElem(LinkListL,inti,ElemType&e){ LinkListp; intj; p=L->next;j=1; while(p&&j<i){ p=p->next; ++j; } if(!p||j>i)returnERROR; e=p->data; returnOK; }//在链表中插入元素StatusInsertList(LinkList&L,inti,ElemTypee){ LinkListp,s;intj; p=L;j=0; while(p&&j<i-1) { p=p->next;++j; } if(!p||j>i-1)returnERROR; s=(LinkList)malloc(sizeof(LNode)); s->next=p->next; p->next=s;s->data=e; returnOK;}//删除指定元素StatusDelList(LinkListL,inti,ElemTypee){ LinkListp,s;intj; p=L;j=0; while((p->next)&&j<i-1) { p=p->next;++j; } if(!(p->next)||j>i-1)returnERROR; s=p->next;p->next=s->next; e=s->data;free(s); returnOK;}//获取链表长度StatusGetLen(LinkListL){ intn=0; LNode*p; p=L->next; while(p!=NULL) { n++; p=p->next; } returnn;}intmain(){ LinkListl; CreatList(l,5); PrintList(l); InsertList(l,3,4); printf("\n"); PrintList(l); DelList(l,3,4); printf("\n"); PrintList(l); return0;}一元多项式相加实现:#include<stdio.h>#include<stdlib.h>#include<conio.h>#defineOK1#defineERROR0#defineOVERFLOW-1#defineTRUE1#defineFALSE0typedefintStatus;typedefintElemType;typedefstructLNode{ intcoef; intexpn; structLNode*next;}LNode,*LinkList;//建立链表储存数据voidCreatList(LinkList&L,intn){ LinkListp,q; inti; L=(LinkList)malloc(sizeof(LNode)); p=q=(LinkList)malloc(sizeof(LNode)); for(i=0;i<n;i++) { if(i==0)L->next=p; elseq->next=p; q=p; scanf("%d",&p->coef); scanf("%d",&p->expn); p=(LinkList)malloc(sizeof(LNode)); } q->next=NULL;}//加法运算LNode*Add(LinkListLa,LinkListLb){ LinkListLc,pc,pa,pb,ptr; intx; Lc=La;pa=La->next;pb=Lb->next;pc=Lc; while(pa!=NULL&&pb!=NULL) { if(pa->expn<pb->expn) { pc->next=pa;pc=pa;pa=pa->next; } if(pa->expn>pb->expn) { pc->next=pb;pc=pb;pb=pb->next; } else { x=pa->coef+pb->coef; if(x==0) { ptr=pa;pa=pa->next;free(ptr); ptr=pb;pb=pb->next;free(ptr); } else { pc->next=pa;pa->coef=x; pc=pa;pa=pa->next; ptr=pb;pb=pb->next;free(ptr); } } } if(pa==NULL)pc->next=pb; elsepc->next=pa; returnLc;}/*voidPrintList(LinkListL){ LinkListp; p=L->next; printf("0"); while(p!=NULL) { printf("%d%d",p->coef,p->expn); p=p->next; } }*///输出多项式voidPrintList1(LinkListL){ LinkListp; p=L->next; printf("\n0"); while(p!=NULL) { printf("+%dx^%d",p->coef,p->expn); p=p->next; } }intmain(){ LinkListLa,Lb,Lc; intm,n; printf("请输入第一个多项式项数:\n");scanf("%d",&m);printf("请输入多项式系数,指数规则【a(系数)b(指数)】\n"); C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026品牌合伙人面试题及答案
- 2026设备运维面试题及答案
- 2026审计辅警面试题及答案大全
- 2026数据挖掘面试题库及答案
- 2026送货安装家具面试题及答案
- 2026唐代选官面试题及答案
- 2026届浙江省小升初语文分班考试模拟试卷(含参考答案解析)
- 2026铁路后勤面试题目及答案
- 2026届广州市高三数学高考一模模拟试卷(含答案详解与评分标准)
- 2026网络助教面试题及答案
- 2026年江西高考历史试卷及答案
- 2026四川自贡市沿滩区就业创业促进中心招聘高校毕业生公共服务岗7人参考题库含答案详解(培优)
- 九年级语文(深圳专用)上学期期末真题汇编-散文阅读练习题(含答案)
- 幽门螺杆菌感染双联方案专家共识解读总结2026
- 2026年广东省高三一模英语试题及答案
- 2025-2026年护士执业资格考试试题及答案解析(完整版)
- 2026年珲春市事业单位公开招聘工作人员和基层治理专干(含专项招聘高校毕业生)(180人)笔试参考试题及答案详解
- 重庆师范大学《英语读写2》2026-2027学年第一学期期末试卷含解析
- 六升七 英语综合能力提升课|备战初中入学考试
- 2026中国质子治疗系统引进成本与本土化生产可行性报告
- (完整)2026年全国高校辅导员素质能力大赛基础知识试题+参考答案
评论
0/150
提交评论