关于一道C#上机题的一点想法

最近因为要面试,所以关注了一些上机题,发现有一个题挺有意思,很多“老鸟”可能都见过。

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

我是比较懒的,所以先搜了一下答案,在园子里面只找到这位仁兄的文章 泛型委托,看完之后总觉得不妥,里面没有体现“面向对象”这个重要思想,于是我自己也来做一做这道题。

 

public class person
   {
       public person Prev { get; set; }
       public person Next { get; set; }
       public int Val { get; set; }

       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 @   Joyaspx  阅读(5474)  评论(42编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示