| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 308 人关注过本帖
标题:哪位高手帮小弟看看错在哪了?新手
取消只看楼主 加入收藏
吉诺小子
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2010-10-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
哪位高手帮小弟看看错在哪了?新手
用链表实现报数  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
吉诺小子
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
吉诺小子
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2010-10-18
收藏
得分:0 
就是用链表实现报数退出  i个人报数报到n的人退出  最后剩下的是哪个?



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



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

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