zoukankan      html  css  js  c++  java
  • 一个简单的通用序列数据结构

    最近经常用到序列的结构,就是一个动态的列表,里面的所有数据都按照顺序排列。

    故写了一个通用的泛型结构,虽然效率不怎么样,但也简单适用。

    代码如下:

    class Program
    {
        static void Main(string[] args)
        {
            var v = new Sequence<int>();
            while (true)
            {
                int k = int.Parse(Console.ReadLine());
                v.Add(k);
                Console.WriteLine(v);
            }
        }
    }

    class Sequence<T> : IEnumerable<T>
    where T : IComparable<T>
    {
        LinkedList<T> nodes = new LinkedList<T>();

        public void Add(T value)
        {
            LinkedListNode<T> node = new LinkedListNode<T>(value);
            if (nodes.Count == 0)
            {
                nodes.AddFirst(node);
                return;
            }
            if (value.CompareTo(nodes.First.Value) < 0)
            {
                nodes.AddFirst(node);
                return;
            }
            if (value.CompareTo(nodes.Last.Value) > 0)
            {
                nodes.AddLast(node);
                return;
            }

            LinkedListNode<T> before = null;
            for (before = nodes.First; before != nodes.Last; before = before.Next)
            {
                if (value.CompareTo(before.Value) >= 0 && value.CompareTo(before.Next.Value) <= 0)
                    break;
            }

            nodes.AddAfter(before, node);
            return;
        }

        public override string ToString()
        {
            List<string> s = new List<string>();
            foreach (var item in nodes)
            {
                s.Add(item.ToString());
            }
            return string.Join(",", s.ToArray());
        }

    #region IEnumerable<T> Members

        public IEnumerator<T> GetEnumerator()
        {
            return nodes.GetEnumerator();
        }

    #endregion

    #region IEnumerable Members

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return nodes.GetEnumerator();
        }

    #endregion
    }

  • 相关阅读:
    HttpClient
    Windows Runtime (RT)
    大败局
    postgresql+postgis+pgrouting实现最短路径查询(1)---线数据的处理和建立拓扑
    postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径
    nodejs+postgis实现搜周边
    mac环境下安装posgreSQL,postGIS,pgrouting方法
    postgresql+postgis+pgrouting实现最短路径查询(3)--流程图
    openlayers中的自定制工具栏,包含画点、线、面
    经常用到的23种广告代码。包括图片切换、对联广告等
  • 原文地址:https://www.cnblogs.com/TianFang/p/860321.html
Copyright © 2011-2022 走看看