C# 简单链表的实现下(使用泛型)
2010-01-31 19:33
776 查看
/// <summary> /// 元素类 /// </summary> class LinkedListNode<T> { private T value; public LinkedListNode(T value) { this.value = value; } //当前元素 public T Value { get { return value; } } //定义了下一个元素 private LinkedListNode<T> next; public LinkedListNode<T> Next { get { return next; } internal set { next = value; } } //定义了前一个元素 private LinkedListNode<T> prev; public LinkedListNode<T> Prev { get { return prev; } internal set { prev = value; } } //※internal定义了只有在同一程序集的文件中,Next才是可以被设置的 } /// <summary> /// 链表类 /// 实现IEnumerable接口,以实现对链表的迭代 /// </summary> class LinkedList<T> : IEnumerable { //链表的头 private LinkedListNode<T> first; public LinkedListNode<T> First { get { return first; } } //链表的结尾 private LinkedListNode<T> last; public LinkedListNode<T> Last { get { return last; } } //AddLast方法在链表结尾添加一个元素, //如果该链表为空,就将该元素设置为链表的开始和结尾 public LinkedListNode<T> AddLast(T node) { LinkedListNode<T> newNode = new LinkedListNode<T>(node); if (first == null) { first = newNode; last = first; } else { last.Next = newNode; last = newNode; } return newNode; } //实现接口IEnumerator的GetEnumerator方法 //通过包含yeild语句的迭代块,来实现对链表的迭代(foreach的实现) public IEnumerator<T> GetEnumerator() { LinkedListNode<T> current = first; while (current != null) { yield return current.Value; current = current.Next; } } //IEnumerator泛型接口的实现方式 IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } class Program { static void Main(string[] args) { LinkedList<int> lst = new LinkedList<int>(); lst.AddLast("c"); //应为是用了泛型,编译时会检验出该错误 } }
相关文章推荐
- 使用C#链表简单实现的约瑟夫环
- C#使用泛型数组简单实现一个列表List
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- 使用Unity3D的设计思想实现一个简单的C#赛车游戏场景
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
- C#中使用SerialPort类实现简单串口编程
- C#中的枚举使用泛型接口和非泛型接口实现
- c#3.5关于JSON简单操作的实用帮助类(泛型实现)
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- 使用C语言实现“泛型”链表
- 使用C语言实现“泛型”链表
- 1.用C#的泛型实现简单的工厂模式
- 用C#实现双向链表(使用泛型)
- [代码积累]C#中泛型缓存的简单实现
- 使用C#的泛型队列Queue实现生产消费模式
- 使用泛型简单封装NGUI的ScrollView实现滑动列表
- 一个简单的C++的链表实现(使用类模板)
- c#利用链表模拟实现泛型集合List﹤T﹥
- 简单学习C#中的泛型方法使用