自定义泛型链表类

本文详细介绍了自定义泛型链表类的实现过程,包括节点类的构造与方法,以及如何在自定义泛型集合上进行迭代。通过实例展示了如何使用该类对不同类型的数据进行操作,如整数和字符串。最后通过输出结果验证了实现的正确性和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     (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();
        }
    }

  输出如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值