吾患 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 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题