由一道C#上机题所想到的一点

题目:17个人围成一圈,从第一个人开始报数,报到3的退出,一直到剩下最后一个人,用面向对象的思想去做这道题。

我自己也来做一做这道题。

 

public class person   public person Prev { getset; }       public person Next { getset; }       public int Val { getset; }       public person() { }       public person(person pre,person next,int val) {           Prev = pre;           Next = next;           Val = val;       }   }   class Program   static void Main(string[] args)       {                    var rootperson = new person();           rootperson.Val = 1;                      //初始化数据           person temp = rootperson;           for (int i = 2; i <= 17; i++)           {               var p = new person(temp, null, i);               temp.Next = p;               temp = p;           }           temp.Next = rootperson;           rootperson.Prev = temp;//最后一个与第一个连接上           //输出           int j = 1;           person start = rootperson;           while (start.Next != null)           {               if (j % 3 == 0) remove(start);               start = start.Next;               j++;           }           Console.ReadLine();       }        public static void remove(person p)//输出并退出链环       Console.WriteLine(p.Val);           if (p.Prev != p.Next)           {               p.Prev.Next = p.Next;               p.Next.Prev = p.Prev;           }           else//只剩下两人的时候           {               p.Prev.Next = null;               p.Prev.Prev = null;           }       }   }
 

输出结果:

cmd

大家也不妨来练一练,提提你的意见。

posted @ 2014-05-24 12:47  zzg168  阅读(113)  评论(0)    收藏  举报