1 / 20
文档名称:

数据结构实验报告.doc

格式:doc   大小:300KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验报告.doc

上传人:tanfengdao 2019/1/30 文件大小:300 KB

下载得到文件列表

数据结构实验报告.doc

文档介绍

文档介绍:计算机科学与技术学院实验报告课程名称:数据结构专业:计算机科学与技术班级:2011级1班学号:201113137024姓名:镇方权指导老师:邱奕敏实验一实验题目设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。程序核心代码structLNode{intdata;structLNode*next;};typedefstructLNode*LinkList;LinkListUnion(LinkListha,LinkListhb){LinkListhead=(LNode*)malloc(sizeof(LNode));head->next=ha;LNode*pa,*pb,*pTmp;pa=ha->next;pb=hb->next;pTmp=ha;while(pa&&pb){if(pa->data<pb->data){pTmp=pa;pa=pa->next;}elseif(pa->data>pb->data){LNode*Lr=(LNode*)malloc(sizeof(LNode));Lr->data=pb->data;Lr->next=pa;pTmp->next=Lr;pTmp=Lr;pb=pb->next;}else{pTmp=pa;pa=pa->next;pb=pb->next;}}if(pa){pTmp->next=pa;}else{while(pb){LNode*Lr=(LNode*)malloc(sizeof(LNode));Lr->data=pb->data;pTmp->next=Lr;pTmp=Lr;pb=pb->next;}pTmp->next=NULL;}free(head);returnha;}intListInsert(LinkListL,inti,inte){intj=0;LinkListp=L,s;while(p&&j<i-1){p=p->next;j++;}if(!p||j>i-1)return0;s=(LinkList)malloc(sizeof(structLNode));/*生成新结点*/s->data=e;/*插入L中*/s->next=p->next;p->next=s;return1;}intmain(){ LinkListha,hb; intn,i; intdata; InitList(&ha); printf("请输入ha中数据的个数:"); scanf("%d",&n); printf("请依次输入ha中的数据:\n"); for(inti=1;i<=n;i++) { scanf("%d",&data); ListInsert(ha,i,data); } printf("ha="); LinkListp=ha->next; while(p) { printf("%d",p->data); p=p->next; } printf("\n"); InitList(&hb); printf("请输入hb中数据的个数:"); scanf("%d",&n); printf("请依次输入hb中的数据:\n"); for(i=1;i<=n;i++) { scanf("%d",&data); ListInsert(hb,i,data); } printf("hb="); p=hb->next; while(p) { printf("%d",p->data); p=p->next; } printf("\n"); printf("hb归并到ha后,新的ha="); p=Union(ha,hb)->next; while(p) { printf("%d",p->data); p=p->next; } printf("\n"); system("pause"); return0;},则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。实验二实验题目结合书上第41页的例子(一元多项式相加),采用链式存储结构,将两个线性链表表示的一元多项式相加,并输出。程序核心代码typedefstructLNode{intdata;//存储系数intflag;//存储对应幂数structLNode*next;}LNode;//建立带头结点的单链表,n项多项式voidCreateList(LNode**L,intn){LNode*p;inti=0;*L=(LNode*)malloc(sizeof(LNode));(*L)->next=NULL;for