欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    大数据结构实验报告材料4.doc

    • 资源ID:1119504       资源大小:133KB        全文页数:10页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    大数据结构实验报告材料4.doc

    word数据结构实验报告实验4学号: : 得分:_一、实验目的1、复习线性表的逻辑结构、存储结构与根本操作;2、掌握顺序表和带头结点单链表;3、了解有序表。二、实验容1、必做题假设有序表中数据元素类型是整型,请采用顺序表或带头结点单链表实现:1OrderInsert(&L, e, int (*pare)(a, b)/根据有序判定函数pare,在有序表L的适当位置插入元素e;2OrderInput(&L, int (*pare)(a, b)/根据有序判定函数pare,并利用有序插入函数OrderInsert,构造有序表L;3 OrderMerge(&La, &Lb, &Lc, int (*pare)()/根据有序判定函数pare,将两个有序表La和Lb归并为一个有序表Lc。2、必做题请实现:1升幂多项式的构造,升幂多项式是指多项式的各项按指数升序有序,约定系数不能等于0,指数不能小于0;2两个升幂多项式的相加。三、算法描述采用自然语言描述1.创建带头节点的链表,输入两个有序表数据La Lb归并两个有序表得有序表Lc输出三个有序表输入需插入数据e将e插入有序表Lc输出插入e后的Lc2.创建链表按指数升序输入多项式得序数和指数输出多项式按指数升序输入第二个多项式得序数和指数两个多项式相加输出第二个多项式和两个多项式得和四、详细设计画出程序流程图1.创建带头节点的链表输入两个有序表数据La Lb开始归并两个有序表得有序表Lc输出三个有序表输入需插入数据e将e插入有序表Lc输出插入e后的Lc完毕2.创建链表按指数升序输入多项式得序数和指数开始输出多项式按指数升序输入第二个多项式得序数和指数两个多项式相加输出第二个多项式和两个多项式的和完毕五、程序代码给出必要注释1.#include<stdio.h>#include<malloc.h>typedef struct LNode int date; struct LNode *next; LNode,*Link;typedef struct LinkList Link head;/头结点 int lenth;/链表中数据元素的个数 LinkList;int pare (LinkList *L,int e)/有序判定函数 pare int Lc=0; Link p; p=L->head; p=p->next; while(p!=NULL) if(e>p->date) p=p->next; Lc+; else return Lc; return Lc;void OrderInsert (LinkList *L,int e,int (*pare)()/根据有序判定函数pare,在有序表L的适当位置插入元素e; Link temp,p,q; int Lc,i; temp=(Link)malloc(sizeof(LNode); temp->date=e; p=q=L->head; p=p->next; Lc=(*pare)(L,e); if(Lc=L->lenth) while(q->next!=NULL) q=q->next; q->next=temp; temp->next=NULL; else for(i=0; i<Lc; i+) p=p->next; q=q->next; q->next=temp; temp->next=p; +L->lenth;void OrderMerge (LinkList *La,LinkList *Lb,int (*pare)()/根据有序判定函数 pare ,将两个有序表 La 和 Lb 归并为一个有序表 int i,Lc=0; Link temp,p,q; q=La->head->next; while(q!=NULL) p=Lb->head; temp=(Link)malloc(sizeof(LNode); temp->date=q->date; Lc=(*pare)(Lb,q->date); if(Lc=Lb->lenth) while(p->next!=NULL) p=p->next; p->next=temp; temp->next=NULL; else for(i=0; i<Lc; i+) p=p->next; temp->next=p->next; p->next=temp; q=q->next; +Lb->lenth; LinkList *Initialize (LinkList *NewList) int i; Link temp; NewList=(LinkList *)malloc(2+1)*sizeof(LinkList); for(i=0; i<2+1; i+) temp=(Link)malloc(sizeof(LNode); temp->date=0; temp->next=NULL; (NewList+i)->head=temp; (NewList+i)->lenth=0; return NewList;void Insert (LinkList *NewList) int a,i; char c; printf("在第1个表中插入数据,输入“ N 再对下个表插入数据 n"); for(i=0; i<2; i+) while(1) scanf("%d",&a); c=getchar(); if(c='N') if(i<2-2) printf("在第 %d个表中插入数据,输入 “ N 再对下个表插入数据 n",i+2); else if(i=2-2) printf("在第 %d个表中插入数据,输入“ N 完毕。 n",i+2); break; else OrderInsert(NewList+i),a,pare); void Show (LinkList *L)/输出有序表 Link p; p=L->head->next; while(p!=NULL) printf("%d ",p->date); p=p->next; void visit(LinkList *NewList,void (*Show)() printf("有序表如下:n"); printf("第一个有序表为:n"); (*Show)(NewList+0); printf("n"); printf("第二个有序表为:n"); (*Show)(NewList+1); printf("n"); printf("归并后有序表为:n"); (*Show)(NewList+2); printf("n");int main() LinkList *NewList=NULL; LinkList *L; int i, e; printf("请按要求输入数据n"); NewList=Initialize(NewList); Insert(NewList); for(i=0; i<2; i+) OrderMerge (NewList+i,NewList+2,pare); visit(NewList,Show); L=NewList; printf("n请输入将要插入的e:n"); scanf("%d",&e); OrderInsert(NewList+i),e,pare); printf("对归并后有序表插入e后得n"); Show(NewList+2); return 0;2.#include<stdio.h>#include<malloc.h>typedef struct node int xi; int zi; struct node *next; Node;Node *Creat()/用链表储存多项式的序数与指数 Node *head,*p,*q; int or,in; head=(Node *)malloc(sizeof(Node); head->next=NULL; q=head; printf("请输入多项式的序数与指数n注意:按照指数升序输入,系数不能等于0且指数不能小于0,序数与指数用空格隔开,并以0 0完毕输入n"); scanf("%d %d",&or,&in); while(or) p=(Node *)malloc(sizeof(Node); p->xi=or; p->zi=in; p->next=q->next; q->next=p; q=p; scanf("%d %d",&or,&in); return head;void visit(Node *head) /输出多项式 Node *p=head->next; while(p) printf("%dX%d+",p->xi,p->zi); p=p->next; printf("NULLnn");Node *Add(Node *head1,Node *head2)/多项式相加 Node *p,*head,*p1,*p2; int sum; head=(Node *)malloc(sizeof(Node); p=head; p1=head1->next; p2=head2->next; while(p1&&p2) /当两多项式都存在时 if(p1->zi=p2->zi) /如果指数相等 sum=p1->xi+p2->xi; if(sum) p1->xi=sum; p->next=p1; p=p1; p1=p1->next; p2=p2->next; else /指数不相等分两种情况 if(p1->zi<p2->zi) p->next=p1; p=p1; p1=p1->next; else p->next=p2; p=p2; p2=p2->next; if(p1) p->next=p1; /将1中剩余结点接到和链表中 因为最终只剩下一段链表多项式 else p->next=p2; /将2中剩余结点接到和链表中 这段链的链头接到目标链表就可以了 return head;int main() printf("请输入第一个多项式n"); Node *head,*p1,*p2; p1=Creat(); printf("多项式为:n"); visit(p1); printf("请输入第二个多项式n"); p2=Creat(); printf("多项式为:n"); visit(p2); head=Add(p1,p2); printf("n多项式相加后得:n"); visit(head); return 0;六、测试和结果给出测试用例,并给出测试结果1.2.七、用户手册告诉用户如何使用程序,使用须知事项等10 / 10

    注意事项

    本文(大数据结构实验报告材料4.doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开