所有人围成一圈,在游戏开始前确定一数;游戏进行时,每个人依次报数,若报的数为该数的倍数,则此人退出,依次重复,直到最后 一个人,最后一个有为优胜者;
效果如下:
有多少人参加游戏? 10
数到哪个数的倍数就退出? 2
编号为5的人胜出!按含任意键继续.....
效果如下:
有多少人参加游戏? 10
数到哪个数的倍数就退出? 2
编号为5的人胜出!按含任意键继续.....
解决方案 »
- asp.net+javascript视频圈套视频教程,欢迎大家下载学习
- C# winfrom上传图片到ftp空间报错,100分求解决,急。。。
- 几个C#语法问题求解答……
- 在C#中如何使用socket 上传图片到服务器
- 关于dataset
- 两个窗体间传递数据,直接传DataSet的方式好吗?用那种方式比较好?
- 我有一个用Fortran开发的DLL,请问能不能在C#中解析出这个DLL接口含有多少个参数及每个参数的类型?
- timer控件问题
- 查询条件如何加上时间?没分了,大家帮帮我吧!
- 送大家一个多媒体类库拉!!!!!
- 在方法中设置了断点,调试时并不停,只有此页面这样,其他页面正常
- 关于WCF的X509证书认证问题
只是类的特性而已,而且里面也有注释using System ;
public class CircularLinkedList
{
private class Node
{
public Node (object value)
{
item=value;
}
public object item;
public CircularLinkedList .Node next;
public override string ToString()
{
return item.ToString();
}
}
private int count; //记录元素个数;
public int Count
{
get {return count ;}
}
private Node tail; //尾指针;
public object Current //指示当前节点中的值;
{
get {return currentPre.next.item;}
}
private Node currentPre; //使用前驱结点来标示当前节点;
//在链表尾部添加元素;
public void Add(object values)
{
Node newNode=new Node (values);
if(tail==null) //如果链表为空,则新节点既是头指针,又是尾指针;
{
tail=newNode;
tail.next=newNode ;
currentPre=newNode;
}
else
{
newNode.next=tail.next;
tail.next =newNode ;
if(currentPre ==tail)
{
currentPre =newNode;
}
tail =newNode ; //把尾指针指向新节点;
}
count ++;
}
//删除当前节点;
public void RemoveCurrentNode()
{
if(tail ==null )
{
throw new NullReferenceException ("集合中没有任何元素!");
}
else if(count ==1)
{
tail =null;
currentPre =null ;
}
else
{
if(currentPre .next ==tail)
{
tail=currentPre ;
}
currentPre.next=currentPre.next.next ;
}
count --;
}
//让当前节点向前移动指定的步数;
public void Move(int step)
{
if(step <0)
{
throw new ArgumentOutOfRangeException("移动步数不能小于0!");
}
if(tail ==null )
{
throw new NullReferenceException ("集合中没有任何元素!");
}
for(int i=0;i<step; i++)
{
currentPre=currentPre.next ;
}
}
//打印整个链表;(仅用于测试)
public override string ToString()
{
if(tail==null )
{
return string.Empty;
}
string s="";
Node temp=tail.next;
for(int i=0;i<count ;i++)
{
s+=temp.ToString()+" ";
temp=temp.next;
}
return s;
}
}
class App
{
static void Main()
{
CircularLinkedList clist=new CircularLinkedList ();
string s=string.Empty;
Console.WriteLine ("请输入总人数:");
int count=int.Parse (Console.ReadLine());
Console.WriteLine ("请输入间隔数字M的值:");
int m=int.Parse (Console.ReadLine ());
Console.WriteLine("开始游戏:");
for(int i=1;i<count+1;i++)
{
clist .Add (i);
}
Console.WriteLine("所有人:"+clist .ToString ()+"/n");
while (clist.Count>1)
{
clist .Move(m);
s+=clist.Current.ToString ()+" ";
Console .WriteLine ("出局的人:"+clist.Current);
clist.RemoveCurrentNode ();
Console .WriteLine ("剩余的人:"+clist .ToString ());
Console.WriteLine("/n开始数数的人:"+clist .Current );
}
Console .WriteLine ("/r/n出队顺序:"+s+clist.Current);
}
}