首页 新闻 会员 周边 捐助

C#中如何实现一个总合计数值固定的队列,能返回当前队列中元素的最大值,最小值和元素个数

0
悬赏园豆:20 [待解决问题]

C#中如何实现一个总合计数值固定的队列,能返回当前队列中元素的最大值,最小值和元素个数

假设:数据元素为 结构(int id,double data),其中ID是序号,data是需计算的数值
      固定 队列 合计数值固定为 100 (data的合计数)
      当有元素加入队列时,累计data总合计;
        当总合计值大于100时,计算是否需要 移除最早的元素,(可能移除多个元素)直到队列中元素的data合计值刚好大于等于100;
        当总合计值小于等于100时,仅加入数据到队列,不移除元素。

武胜-阿伟的主页 武胜-阿伟 | 初学一级 | 园豆:132
提问于:2013-01-24 09:31
< >
分享
所有回答(1)
0
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<DataEntity>();
            list = Join(list, new DataEntity { Id = 1, Data = 10 });
            list = Join(list, new DataEntity { Id = 2, Data = 20 });
            list = Join(list, new DataEntity { Id = 3, Data = 30 });
            list = Join(list, new DataEntity { Id = 4, Data = 40 });
            list = Join(list, new DataEntity { Id = 5, Data = 50 });

            list.ForEach((p) => {
                Console.WriteLine("ID={0},Data={1}", p.Id, p.Data);
            });

            Console.WriteLine("最大值{0},最小值{1},元素个素{2}", list.Max(p => p.Data), list.Min(p => p.Data), list.Count());

            Console.Read();
        }

        static List<DataEntity> Join(List<DataEntity> list, DataEntity entity)
        {
            if (list.Sum(p => p.Data) + entity.Data > 100)
            {
                while (list.Sum(p => p.Data) + entity.Data > 100)
                {
                    list.RemoveAt(0);
                }
            }

            list.Add(entity);

            return list;
        }

    }

    class DataEntity
    {
        public int Id{get;set;}
        public double Data{get;set;}
    }
}
Rich.T | 园豆:3440 (老鸟四级) | 2013-01-24 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册