吾患 2013-10-18 15:01
浏览 1076

约瑟夫环的实验运行结果一直不对

在做约瑟夫环的实验,但是运行结果一直不对,偶尔会往前挪一个数或者往后挪,求帮忙修改,捉急呀~谢谢!
#include
#include
#define Error -1
#define True 1
typedef struct LNode
{
int num;//定义人编号
int pwd;//密码
struct LNode *next;
}LNode;

LNode head,*p,*pt;//定义结点
int Createlinklist(int n) //建立循环链表函数,并传递n
{
int i;
head=( LNode
)malloc(sizeof(LNode));
if(!head) return Error;
p=head;
for(i=1;i {
pt= (LNode *)malloc(sizeof (LNode));
if(!pt) return Error;
p->next=pt;
p=pt;
}
p->next=head;
pt=head;
return True;
}

int enterpwd(int n)//建立输入密码函数
{
int i,j;
printf("\n请输入密码:");
for(i=1;i<=n;i++)
{
scanf("%d",&j);
pt->num=i;
pt->pwd=j;
pt=pt->next;
}
pt=p;
return j;
}

int outlist(int m,int n)//建立输出函数
{
int i;
int a;
for(i=1;i<=n;i++)
{
for(a=1;a {
pt=pt->next;
}
p=pt->next;
m=p->pwd;
printf(" %d",p->num);
pt->next=p->next;
free(p);
}
return 0;
}

void main()
{
int m,n;//m为报数上限,n为围圈人数
printf("请输入m,n:");
scanf("%d %d",&m,&n);
if(n<=0 || m<0)
{
printf("\n\n\t\t输入出错!最后一次重新输入机会~\n\n\n");
printf("请重新输入m,n:");
scanf("%d %d",&m,&n);
if(n<=0 || m<0)
{
printf("\n\n\t\t输入出错!请退出!\n\n");
printf("\n\n\t");
}
else
{
Createlinklist(n);//调用链表函数
enterpwd(n);//调用输入函数
printf("\n围圈人的出列顺序依次是:\t");
outlist(m,n);//调用输出函数
printf("\n\n\t");
}
}
else
{
Createlinklist(n);//调用链表函数
enterpwd(n);//调用输入函数
printf("\n出队的人依次是:");
outlist(m,n);//调用输出函数
printf("\n\n\t");
}
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 聚类分析或者python进行数据分析
    • ¥15 逻辑谓词和消解原理的运用
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号