zoukankan      html  css  js  c++  java
  • 自定义泛型链表类

         (1)自定义泛型链表类。

        public class GenericList<T>
        {
            private class Node
            {
                //当前节点值
                private T data;
                public T Data
                {
                    get { return data; }
                    set { data = value; }
                }
    
                //节点的下一个节点
                private Node next;
                public Node Next
                {
                    get { return next; }
                    set { next = value; }
                }
    
                //节点的上一个节点
                private Node last;
                public Node Last
                {
                    get { return last; }
                    set { last = value; }
                }
    
                public Node(T t)
                {
                    data = t;
                    next = null;
                }
            }
    
            private Node firstNode;
            private Node lastNode;
    
            public void AddNode(T t)
            {
                Node node = new Node(t);
                node.Last = lastNode;
    
                if (lastNode != null)
                    lastNode.Next = node;
    
                lastNode = node;
    
                if (firstNode == null)
                {
                    firstNode = node;
                }
            }
    
            //要在自定义泛型集合上迭代
            //必须实现该接口
            public IEnumerator<T> GetEnumerator()
            {
                Node current = firstNode;
                while (current != null)
                {
                    //yield return表达式以枚举对象返回
                    yield return current.Data;
                    current = current.Next;
                }
            }
        }

            (2)自定义泛型链表类调用。

        class GenericListTestTwo
        {
            static void Main()
            {
                // 类型参数为int
                GenericList<int> list = new GenericList<int>();
                for (int a = 0; a < 5; a++)
                {
                    list.AddNode(a);
                }
                foreach (int i in list)
                {
                    System.Console.WriteLine(i);
                }
    
                //类型参数为string
                GenericList<string> strList = new GenericList<string>();
                strList.AddNode("First Node");
                strList.AddNode("Second Node");
                foreach(string s in strList)
                {
                    System.Console.WriteLine(s);
                }
    
    
                Console.Read();
            }
        }

      输出如下:

  • 相关阅读:
    Q739.每日温度
    面试题46. 把数字成字符串
    [990. 等式方程的可满足性]--并查集
    [128. 最长连续序列]
    javaweb实现简单登陆功能
    7.12_python_lx_practise
    7.12_python_lx_day6
    7.12_python_lx_day5
    7.2_python_lx_day4
    7.2_python_lx_day3
  • 原文地址:https://www.cnblogs.com/wanghonghu/p/2585221.html
Copyright © 2011-2022 走看看