山石渡情吧 关注:13贴子:1,341
  • 4回复贴,共1

【欢迎新人】

取消只看楼主收藏回复

新人进来留一个脚印咯
   -- 律回岁晚冰霜少,春到人间草木知


来自Android客户端1楼2014-12-28 11:11回复
    @苏沫0508


    来自Android客户端5楼2015-06-04 23:55
    回复
      #include <stdio.h>
      #include <stdlib.h>
      #define error 0
      #define ok 1
      typedef int Status;
      typedef int ElemType;
      typedef struct LNode
      {
      ElemType data;
      int m;
      struct LNode *next;
      }LNode,*LinkList;
      Status InitList( LinkList &H )
      {
      H = ( LinkList )malloc( sizeof( LNode ) );
      H->next = H;
      return ok;
      }
      Status CreateList( LinkList &H,int n )
      {
      LinkList p,q,s;
      int i;
      p = H;
      for( i = 1;i <= n;i++ )
      {
      q = ( LinkList )malloc( sizeof( LNode ) );
      q->data = i;
      printf("µÚ %d ¸öÈ˵ÄÃÜÂëÊÇ:",i);
      scanf("%d",&q->m);
      q->next = p->next;
      p->next = q;
      p = q;
      }
      s = H->next;
      p->next = H->next;
      free(H);
      H = s;
      return ok;
      }
      Status Joseph(LinkList &H,int n,int x)
      {
      LinkList p,q;
      int i;
      while( H&&H->next->data != H->data)
      {
      if(x==1)
      {
      p = q = H;
      while( p->next!=H )
      p = p->next;
      printf("µÚ %d ¸ö³ö¾Ö\n",p->next->data);
      p->next = H->next;
      H = H->next;
      free(q);
      continue;
      }
      for( i = 1;i < x%n-1;i++ )
      H = H->next;
      p = H->next;
      printf("µÚ %d ¸ö³ö¾Ö\n",p->data);
      x = p->m;
      H->next = p->next;
      free(p);
      H = H->next;
      }
      if(H&&H->next->data == H->data)
      {
      printf("µÚ %d ¸ö³ö¾Ö\n",H->data);
      }
      return ok;
      }
      int main()
      {
      LNode *Head;
      InitList(Head);
      int num1,num2;
      printf("ÇëÊäÈë×ÜÈËÊý:");
      scanf("%d",&num1);
      CreateList(Head,num1);
      printf("µÚÒ»¸ö³ö¾ÖµÄÈË:");
      scanf("%d",&num2);
      Joseph(Head,num1,num2);
      return 0;
      }


      7楼2015-10-26 12:10
      回复
        #include <stdio.h>
        #include <stdlib.h>
        #define error 0
        #define ok 1
        typedef int Status;
        typedef int ElemType;
        typedef struct LNode
        {
        ElemType data;
        int m;
        struct LNode *next;
        }LNode,*LinkList;
        Status InitList( LinkList &H )
        {
        H = ( LinkList )malloc( sizeof( LNode ) );
        H->next = H;
        return ok;
        }
        Status CreateList( LinkList &H,int n )
        {
        LinkList p,q,s;
        int i;
        p = H;
        for( i = 1;i <= n;i++ )
        {
        q = ( LinkList )malloc( sizeof( LNode ) );
        q->data = i;
        printf("第 %d 个人的密码是:",i);
        scanf("%d",&q->m);
        q->next = p->next;
        p->next = q;
        p = q;
        }
        s = H->next;
        p->next = H->next;
        free(H);
        H = s;
        return ok;
        }
        Status Joseph(LinkList &H,int n,int x)
        {
        LinkList p,q;
        int i;
        while( H&&H->next->data != H->data)
        {
        if( x==1 )
        {
        p = q = H;
        while( p->next!=H )
        p = p->next;
        printf("第 %d 个出局",p->next->data);
        printf("\n");
        p->next = H->next;
        H = H->next;
        free(q);
        continue;
        }
        for( i = 1;i < x%n-1;i++ )
        H = H->next;
        p = H->next;
        printf("第 %d 个出局",p->data);
        printf("\n");
        x = p->m;
        H->next = p->next;
        free(p);
        H = H->next;
        }
        if(H&&H->next->data == H->data)
        {
        printf("第 %d 个出局\n",H->data);
        }
        return ok;
        }
        int main()
        {
        LNode *Head;
        InitList(Head);
        int num1,num2;
        printf("请输入总人数:");
        scanf("%d",&num1);
        CreateList(Head,num1);
        printf("第一个出局的人:");
        scanf("%d",&num2);
        Joseph(Head,num1,num2);
        return 0;
        }


        8楼2015-10-26 12:11
        回复
          #include<stdio.h>
          #include<stdlib.h>
          typedef struct Node
          {
          int password;
          int num;
          struct Node *next;
          } Node,*Linklist;
          void Josephus()
          {
          Linklist L;
          Node *p,*r,*q;
          int m,n,C,j;
          L=(Node*)malloc(sizeof(Node));
          if(L==NULL)
          {
          printf("\n链表申请不到空间!");
          }
          L->next=NULL;
          r=L;
          printf("请输入人数n的值(n>0):");
          scanf("%d",&n);
          for(j=1;j<=n;j++)
          p=(Node*)malloc(sizeof(Node));
          if(p!=NULL)
          {
          printf("请输入第%d个人的密码:",j);
          scanf("%d",&C);
          p->password=C;
          p->num=j;
          r->next=p;
          r=p;
          }
          }
          r->next=L->next;
          printf("请输入第一个报数上限值m(m>0):");
          scanf("%d",&m);
          printf("*****************************************\n");
          printf("出列的顺序为:\n");
          q=L;
          p=L->next;
          while(n!=1)
          {
          j=1;
          while(j<m)
          {
          q=p;
          p=p->next;
          j++;
          }
          printf("%d->",p->num);
          m=p->password;
          n--;
          q->next=p->next;
          r=p;
          p=p->next;
          free(r);
          }
          printf("%d\n",p->num);
          }
          int main()
          {
          Josephus();
          return 0;
          }


          9楼2015-11-02 16:57
          回复