| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 814 人关注过本帖
标题:各位高手,进来帮我看看嘛--感激不尽!!!
只看楼主 加入收藏
lijunhua
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-4-17
收藏
 问题点数:0 回复次数:1 
各位高手,进来帮我看看嘛--感激不尽!!!
[约瑟夫环]:编号为1,2,...,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止.设计程序求出列顺序.
[利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号,用c写],帮我写一下啊,谢谢了!!!
搜索更多相关主题的帖子: 感激不尽 时针 整数 密码 
2005-05-11 23:34
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

我发过很多次了,再发一次,最后一次 #include<stdio.h> //本程序是进行循环链表的基本运算 #include<stdlib.h> #define N 7

struct node{int data; node *next; }; node* creat(void) //建立循环链表 {node *head,*p; int i; head=(node*)malloc(sizeof(node)); head->data=1; head->next=head; for(i=N;i>1;i--) {p=(node*)malloc(sizeof(node)); p->data=i; p->next=head->next; head->next=p; } return head; } void output(node *head) //输出循环链表 {node *p; p=head; printf("循环链表的数字;\n"); do{printf("%d\t",p->data);p=p->next; }while(p!=head); printf("\n"); } void play(node *head,int n) //进行筛选 {node *p,*q; int k=N,c=1;//c是计数器 p=head; printf("筛选的数字:\n"); while(k>1) {if(c==n-1) {q=p->next; printf("%d\n",q->data); p->next=q->next; free(q); c=0;k--; } else {c++;p=p->next;} } printf("首领:"); printf("%d\n",p->data); } void main() {node *head; int n; head=creat(); output(head); printf("报数:\n"); scanf("%d",&n); play(head,n); }


c++/C + 汇编 = 天下无敌
2005-05-12 07:27
快速回复:各位高手,进来帮我看看嘛--感激不尽!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039612 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved