回 帖 发 新 帖 刷新版面

主题:求助大虾~!!!~!~问题出在什么地方啊?~!!!

//约瑟夫问题的解决。。。。。。调试出错了。。结果出不来。。
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node{
       int      num;
       int      password;
   struct node  *next;
}Lnode;
struct node *L;
Lnode *cjos(int n)
{
    int i;
    Lnode *p,*q=(Lnode *)malloc(sizeof(Lnode));
    q->num=n;q->password=rand();L=q;
    printf("%d\n",q->password);
    for(i=n-1;i>0;i--)
    {
      p=(Lnode *)malloc(sizeof(Lnode));
      p->num=i;p->password=rand();
      L=p;
      printf("%d\n",q->password);
     }
    q->next=L;
    return L;
}
void jeseph(Lnode *h,int m)
{
    int j=1;
    h=L;
    while(L->next!=L)
    { 
        while (j<m)
        {
            L=h;
            h=h->next ;
            j++;
        }
        m=h->password;
        printf("number:%d\n",h->num);
        L->next =h->next ;
        free(h);
    }
    printf("number:%d\n",L->num);

    free(L); /* 让最后一个人也出列 */
}
void main()
{   
    Lnode *H;
    int m,n;
    printf("输入人数n:\n");
    scanf("%d",&n);
    H=cjos(n);
    printf("输入初始密码m:\n");
    scanf("%d",&m);
    printf("出列顺序为:\n");
    jeseph(H,m);
}

回复列表 (共2个回复)

沙发

Lnode *cjos(int n)中的L是指像表头的指针?

void jeseph(Lnode *h,int m)中h=L;你不觉得有问题?


板凳

谢谢提醒~!  不过改了之后 还是出不来啊 ~!
我比较纳闷到底哪错拉 ~!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册