| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 982 人关注过本帖
标题:终于把约瑟环的程序改好了,大家提下意见吧!
取消只看楼主 加入收藏
ephemerality
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-7
收藏
 问题点数:0 回复次数:0 
终于把约瑟环的程序改好了,大家提下意见吧!

约瑟夫环:将编号为12,…,nn个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个开始按顺时针方向自1开始报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。设m的初值为20,密码为:3172484

// cx.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include<stdlib.h>

#include<iostream.h>

typedef struct LNode

{

int num,pwd;

struct LNode *next;

}LNode, *LinkList;

void main()

{

int a,i,m,n,j;//m为报数上限值,n为人数,j为输入的密码;

cout<<"please enter m and n:";

cin>>m>>n;

LinkList p,p1,pt;

p1=(LinkList)malloc(sizeof(LNode));

p=p1;

for(i=1;i<n;i++)

{

pt=(LinkList)malloc(sizeof(LNode));

p->next=pt;

p=pt;

}

pt->next=p1;

pt=p1;

p=p1;//建立n个节点;

cout<<"please enter the password:";

for(i=1;i<=n;i++)

{

cin>>j;

p->num=i;

p->pwd=j;

p=p->next;

}//输入密码;

for(i=1;i<=n;i++)

{ for(a=1;a<m-1;a++)

{ p=p->next;}

if (m==1)

{m=pt->pwd;

cout<<pt->num;

cout<<",";

p=pt->next;

}

else{ pt=p->next;

m=pt->pwd;

cout<<pt->num;

cout<<",";//输出出列顺序

}

p->next=pt->next;

free(pt);

pt=p->next;

p=pt;

}

}

搜索更多相关主题的帖子: 约瑟 意见 
2006-06-09 22:57
快速回复:终于把约瑟环的程序改好了,大家提下意见吧!
数据加载中...
 
   



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

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