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
    }

  • 相关阅读:
    2019-01-28 dubbo安装并启动测试
    JAVAWEB项目获取服务器、项目相关路径方法
    Hibernate中的查询方式
    Hibernate在eclipse中的简单运用
    JQuery Tips(2)----关于$()包装集你不知道的
    JQuery Tips(3)----关于$()包装集内元素的改变
    JQuery Tips(4)----一些关于提高JQuery性能的Tips
    利用FireBug使JQuery的学习更加轻松愉快
    asp.net core2 mvc 基础教程--中间件
    asp.net core2 mvc 基础教程--服务注册和管道
  • 原文地址:https://www.cnblogs.com/TianFang/p/860321.html
Copyright © 2011-2022 走看看