利用泛型写一个简单的链表

简介:

image

--------《设计模式:基于C#的工程化实现及扩展》

 

利用泛型实现简单链表

复制代码
namespace BangWorks.PractcalPattern.Generic
{
    /// <summary>
    /// 泛型链表
    /// </summary>
    public class GenericList<T>
    {
       /// <summary>
        /// 链表中的节点
       /// </summary>
       public class Node
        {
            //一个属性,用来保存数据
            private T _Data;
            //用来保存下一个节点的引用
            public T Data
            {
                get { return _Data; }
                set { _Data = value; }
            }
            
            //利用泛型参数,初始化Node
           public Node(T Data)
            {
                this._Data = Data;
            }
           //用来保存下一个节点
            private Node _NextNode;

            public Node NextNode
            {
                get { return _NextNode; }
                set { _NextNode = value; }
            }
        }
       private Node head;
        public GenericList()
        {
            head = null;
        }

        /// <summary>
        /// 添加到头部的方法
        /// </summary>
        /// <param name="Data">泛型数据</param>
        /// <returns></returns>
        public bool AddHead(T Data)
        {
            Node n = new Node(Data);
            n.NextNode = head;
            head = n;
            return true;
        }
        /// <summary>
        /// 提供一个迭代器,用来遍历所有节点
        /// </summary>
        /// <returns></returns>
        public IEnumerator<T> GetEnumerator()
        {
            Node current = head;

            while (current != null)
            {
                yield return current.Data;
                current = current.NextNode;
            }
        }
    
    }
}
复制代码

 

参考链接:

泛型(C# 编程指南)

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/04/02/2995252.html如需转载请自行联系原作者

kissazi2
相关文章
|
机器学习/深度学习 Java
泛型使用 && 包装类 && 顺序表与ArrayList &&顺序表和链表
泛型使用 && 包装类 && 顺序表与ArrayList &&顺序表和链表
87 0
|
C# 索引 算法
【 C# 】(一) ------------- 泛型带头节点的单链表,双向链表实现
在编程领域,数据结构与算法向来都是提升编程能力的重点。而一般常见的数据结构是链表,栈,队列,树等。事实上C#也已经封装好了这些数据结构,在头文件 System.Collections.Generic 中,直接创建并调用其成员方法就行。
1226 0
|
机器学习/深度学习
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
128 2
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
161 1
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表