北京理工大学数据结构实验1_第1页
北京理工大学数据结构实验1_第2页
北京理工大学数据结构实验1_第3页
北京理工大学数据结构实验1_第4页
北京理工大学数据结构实验1_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京理工大学数据结构实验11、采用单向环表实现约瑟夫环。请按以下要求编程实现: 从键盘输入整数 m,通过create函数生成一个具有 m个结点的单向环表。 环表中的结点编号依次为1, 2, ,m。从键盘输入整数s (1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第 n 个结点时, 输出该第 n 结点对应的编号, 将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。例如,m=10, s=3, n=4。则输出序列为:6, 10, 4, 9, 5, 2, 1, 3, 8, 7。#include&

2、lt;stdio.h>#include<malloc.h>#define ERROR 0typedef struct LNodeint num;struct LNode *next;LNode,*Linklist;void main()int m,s,n,i,j;Linklist head,p,q;printf("input m:n");scanf("%d",&m);printf("input s and n:n");scanf("%d %d",&s,&n);if(!(he

3、ad=(Linklist)malloc(sizeof(LNode) return ERROR;head->next=head;head->num=m;for(i=m-1;i>0;i-)p=(Linklist)malloc(sizeof(LNode);if(!p) return ERROR;p->next=head->next;p->num=i;head->next=p;p=head->next;while(p->next->num!=s) p=p->next;for(i=m;i>1;i-)for(j=1;j<n;j+

4、) p=p->next;q=p->next;p->next=q->next;printf("%d,",q->num);free(q);printf("%d 。 n",p->num);C;U$ersAdministratorDeskrop'www e»e | n '回起|2、归并顺序表请按以下要求编程实现: 从键盘输入两个升序排列的整数序列linka和linkb ,每个序列以输入0为结 束标记。 将链表linka和linkb归并为linkc, linkc仍然为升序排列。归并完成后,linka 和

5、linkb为空表。输出linkc。 对linkc进行处理,保持升序不变,删除其中重复的整数,对重复的整数只 保留一个,输出删除重复整数后的链表。例如:linka 输入为:10203040 500linkb 输入为:15202530 354045 50 0归并后的 linkc 为:10 15 20 20 25 30 30 35 40 40 4550 50删除重复后的 linkc 为: 10 15 20 25 30 35 40 45 50#include<stdio.h>#include<malloc.h>#define ERROR 0typedef struct LNod

6、eint data;struct LNode *next;LNode,*Linklist;Linklist MergeList(Linklist La,Linklist Lb)Linklist pa,pb,pc,Lc,q;pa=La->next;pb=Lb->next;Lc=(Linklist)malloc(sizeof(LNode);if(!Lc) return ERROR;Lc->next=NULL;pc=Lc;while(pa&&pb)q=(Linklist)malloc(sizeof(LNode); if(!q)return ERROR;if(pa-&

7、gt;data<=pb->data)q->data=pa->data; q->next=pc->next; pc->next=q; pc=q;pa=pa->next;elseq->data=pb->data; q->next=pc->next; pc->next=q; pc=q;pb=pb->next;while(pa)q=(Linklist)malloc(sizeof(LNode);if(!q)return ERROR; q->data=pa->data; q->next=pc->ne

8、xt; pc->next=q; pc=q;pa=pa->next;while(pb)q=(Linklist)malloc(sizeof(LNode);if(!q)return ERROR; q->data=pb->data; q->next=pc->next; pc->next=q; pc=q;pb=pb->next;free(La);free(Lb);return Lc;Linklist Creatlist(Linklist L)Linklist p,q;int i;L=(Linklist)malloc(sizeof(LNode);if(!L)

9、 return ERROR;L->next=NULL;p=L;scanf("%d",&i);while(i)q=(Linklist)malloc(sizeof(LNode);if(!q)return ERROR;q->data=i;q->next=p->next;p->next=q;p=q;scanf("%d",&i);return L;void Output(Linklist L)Linklist p=L->next;while(p->next)printf("%d ",p-

10、>data);p=p->next;printf("%dn",p->data);void Delete(Linklist L)Linklist p,q,r;p=L->next;q=L->next->next;while(q!=NULL) if(q->data=p->data)r=q;q=q->next;p->next=r->next;free(r);elsep=p->next;q=q->next;void main()Linklist La,Lb,Lc;printf("input linka:n");La=Creatlist(La);printf("input linkb:n");Lb=Creatlist(Lb);Lc=MergeList(La,Lb);printf("linkc:n");Output(Lc);Delete(Lc);printf("linkc':n");Output(Lc); C:UsersAdrrii ni5tratorDe5ktopv/ww.exeI input linka: 10 20 30 43 50 e input linkb:15 20 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论