为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言单向循环链表实现实现约瑟夫环

2019-01-14 4页 doc 15KB 68阅读

用户头像

is_260251

暂无简介

举报
C语言单向循环链表实现实现约瑟夫环C语言实现约瑟夫环问题------单向循环链表实现 问题描述: 有n个人围成一圈进行报数游戏,从第一个人开始报到m的人出圈,接下来有从下一个人开始,。。。。。。。一次这样往复,直到最后一个人也出圈,求他们的出圈顺序?(例如8个人,凡报3的人出圈,则他们出圈顺序是3 ,6, 1,,5 ,2 ,8,4 ,7) #include #include typedef struct node{ int value; struct node *next; }NODE; //*********************建立循...
C语言单向循环链表实现实现约瑟夫环
C语言实现约瑟夫环问题------单向循环链实现 问题描述: 有n个人围成一圈进行报数游戏,从第一个人开始报到m的人出圈,接下来有从下一个人开始,。。。。。。。一次这样往复,直到最后一个人也出圈,求他们的出圈顺序?(例如8个人,凡报3的人出圈,则他们出圈顺序是3 ,6, 1,,5 ,2 ,8,4 ,7) #include #include typedef struct node{ int value; struct node *next; }NODE; //*********************建立循环链表(尾插法建立)***********// NODE *createlink(int number) { NODE *head=NULL,*p=NULL,*q=NULL; int i=1; head=(struct node*)malloc(sizeof(struct node)); //***建立第一个节点***// head->value=i; p=head; for(i=2;i<=number;i++) //***建立剩下的number-1节点****// { q=(struct node*)malloc(sizeof(struct node)); if(q==0) return 0; p->next=q; p=q; p->value=i; } p->next=head; return head; } //*****************建立约瑟夫环********************// void jose(NODE *p,int number,int n) { NODE *q=NULL; for(i=1;i<=number;i++) { for(j=1;jnext; } q=p->next; //***q用来记录要删除的节点*****// p->next=q->next; //****删去q节点******// p=p->next; printf("第%3d个出圈号是:%3d\n",i,q->value); free(q); } printf("\n"); // p->next=NULL; 此表达式不能出现在此处,最后一个节点删除后就不存在了 } //***********************主函数*************************// int main( ) { int number=0; printf("请输入总人数number和出拳编号n:\n"); scanf("%d",&number); scanf("%d",&n); NODE *head=NULL; head=createlink(number); jose(head,number,n); system("PAUSE"); return 1; }
/
本文档为【C语言单向循环链表实现实现约瑟夫环】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索