| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 308 人关注过本帖
标题:哪位高手帮小弟看看错在哪了?新手
只看楼主 加入收藏
吉诺小子
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2010-10-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
哪位高手帮小弟看看错在哪了?新手
用链表实现报数  m个人报数报到n的人退出   最后剩下那个人
#include<iostream.h>
struct rec
{ int number;
   rec *next;
};
rec *creat(int i)
{rec *head;
 rec *p1,*p2;
 p1=p2=new rec;
 int n=0;
 int k=0;
 cout<<"the number"<<endl;

 cin>>p1->number;
 head=NULL;
 while(k<i-1)
 {n++;
 k++;
  if(n==0)
      head=p1;
  else
      p2->next=p1;
  p2=p1;
  p1=new rec;
  cout<<"the number "<<endl;
  cin>>p1->number;
 }
 p2->next=NULL;
 return (head);
}
 




main()
 {int j,n,k,m,i;
  cout<<"the nuber you will stop:"<<endl;
  cin>>n;
  cout<<"how many people there are?"<<endl;

  cin>>i;
  rec *head,*p1,*p2;
  if(n>i)
      cout<<"error!"<<endl;
  else
  {k=0;
   m=0;
j=0;
      head=creat(i);
      /*do
      {cout<<head->number<<" ";
      head=head->next;
      }while(head!=NULL);*/
   p1=p2=head;

  while(m<i)
  {   if(p1->number!=0)
      k++;
  if(k==n)
     { p1->number=0;
         k=0;
   m++;
  }
  p2->next=p1;
  p2=p1;
  j++;
  if(j==i)
      j=0;
  }
  p1=p2=head;
  while(p1->number==0)
  {p2->next=p1;
  p2=p1;
  
  }
      
cout<<"the last one is:"<<p1->number<<endl;
  }

}   
2010-11-21 08:29
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<malloc.h>
typedef struct huan
{
     int num;
     struct huan *next;
}Lhuan;

Lhuan *creat(int n)                             //建立循环链表
{
     int i=1;
     Lhuan *p1,*head;
     head=p1=(Lhuan *)malloc(sizeof(Lhuan));
     head->num=p1->num=i;
     for(i=2;i<=n;i++)
     {
          p1->next=(Lhuan *)malloc(sizeof(Lhuan));
          p1=p1->next;
          p1->num=i;
     }
     p1->next=head;
     return(head);
}

void baoshu(int n,int m,Lhuan *head)         //报数
{
     Lhuan *p1,*p2,*p3;
     int i=2,j=1;                            //j是计数器
     p2=head;
     p1=head->next;
     while(j!=n+1)
     {   
          if(i==m)
          {
              p3=p1;
              p1=p1->next;
              p2->next=p3->next;
              i=0;
              j++;
              printf("%d ",p3->num);
              free(p3);
          }
          else
          {
              p1=p1->next;
              p2=p2->next;
          }
          i++;
      }
}

void main()
{
     Lhuan *head;
     int m,n;
     printf("请输入参加报数的人数N和退出的号数M:\n");
     printf("N=");
     scanf("%d",&n);
     printf("\nM=");
     scanf("%d",&m);
     head=creat(n);
     printf("\n退出的依次是:");
     baoshu(n,m,head);
     printf("\n");
} 
2010-11-21 17:53
吉诺小子
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2010-10-18
收藏
得分:0 
我把程序改动一下  没有你的简单  但是还是不对   不知道为什么  
#include<iostream.h>
struct rec
{ int number;
   rec *next;
};
rec *creat(int i)
{rec *head;
 rec *p1,*p2;
 p1=p2=new rec;
 int n=0;
 
 cout<<"the number"<<endl;

 cin>>p1->number;
 head=NULL;
 while(n<i-1)
 {n++;
 
  if(n==1)
      head=p1;
  else
      p2->next=p1;
  p2=p1;
  p1=new rec;
  cout<<"the number "<<endl;
  cin>>p1->number;
 }
 p2->next=head;
 return (head);
}
 




main()
 {int j,n,k,m,i;
  cout<<"the nuber you will stop:"<<endl;
  cin>>n;
  cout<<"how many people there are?"<<endl;

  cin>>i;
  rec *head,*p1,*p2;
  if(n>i)
      cout<<"error!"<<endl;
  else
  {k=0;
   m=0;
j=0;
      head=creat(i);
      
  p1=p2=head;

  while(m<i)
  {   if(p1->number!=0)
      k++;
  if(k==3)
     { p1->number=0;
         k=0;
   m++;
  }
 
      
  p2->next=p1;
  p2=p1;
 
  }
  p1=p2=head;
  while(p1->number==0)
  {p2->next=p1;
  p2=p1;
  
  }
      
cout<<"the last one is:"<<p1->number<<endl;
  }

}   
结果不输出  不知道为什么  能帮帮看看么  我用c++编写的
2010-11-21 19:45
loveminttea
Rank: 3Rank: 3
来 自:河南科技学院
等 级:论坛游侠
帖 子:95
专家分:146
注 册:2010-10-14
收藏
得分:10 
看不懂...
2010-11-21 19:54
吉诺小子
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2010-10-18
收藏
得分:0 
就是用链表实现报数退出  i个人报数报到n的人退出  最后剩下的是哪个?



因为没有注释 可能不好理解点
2010-11-21 20:28
快速回复:哪位高手帮小弟看看错在哪了?新手
数据加载中...
 
   



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

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