c# 泛型学习(二)

 使用泛型实现简单链表

 

首先创建一个泛型类LinkedListNode,该类型包含了一个属性Value,可以通过初始化进行赋值。还包含对上一个元素和下一个元素的引用。

  

    public class LinkedListNode<T>
        {
            public LinkedListNode(T value)
            {
                this.value = value;
            }
            public T value { get; private set; }

            public LinkedListNode<T> Next { get; internal set; }
            public LinkedListNode<T> Prev { get; internal set; }
        }

 

然后创建一个LinkedList类型,该类包含了对链表首尾元素的引用。还包含一个添加元素到尾部的方法,以及GetEnumrator()方法,以便通过foreach进行遍历元素。

        public class LinkedList<T> : IEnumerable<T>

          {
 
            public LinkedListNode<T> First { get; private set; }
         
     
public LinkedListNode<T> Last { get; private set; } public LinkedListNode<T> AddLast(T node) { var newNode = new LinkedListNode<T>(node); if (First == null) { First = newNode; Last = First; } else { LinkedListNode<T> previous = Last; Last.Next = newNode; Last = newNode; Last.Prev = previous; } return newNode; } public IEnumerator<T> GetEnumerator() { LinkedListNode<T> current = First; while (current != null) { yield return current.value; current = current.Next; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }

 

现在就可以对任意数据类型使用这个简易链表进行操作了。

 

 static void Main(string[] args)

        {

            LinkedList<int> arr = new LinkedList<int>();

            arr.AddLast(0);

            arr.AddLast(1);

            arr.AddLast(2);

            foreach (var item in arr)

            {

                Console.WriteLine(item);

            }

 

            LinkedList<string> sArr = new LinkedList<string>();

            sArr.AddLast("hello 1");

            sArr.AddLast("hello 2");

            sArr.AddLast("hello 3");

 

            foreach (var item in sArr)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

        }

c# 泛型学习(二)

 

c# 泛型学习(二)

上一篇:.Net Core WebApi实现跨域


下一篇:WPF入门教程系列十五——WPF中的数据绑定(一)