博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手动实现枚举器、泛型集合、单链表
阅读量:5136 次
发布时间:2019-06-13

本文共 3733 字,大约阅读时间需要 12 分钟。

废话不多说,直接贴代码:

MyCustomerList.cs

public class MyCustomerList
: IEnumerable
{ private class Node { public Node(T data) { _data = data; _next = null; } 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 _head; public MyCustomerList() { _head = null; } ///
/// 添加到集合的头部 /// ///
public void AddToHead(T data) { Node current = new Node(data); current.Next = _head; _head = current; } ///
/// 添加到集合的尾部 /// ///
public void AddToLast(T data) { Node current = new Node(data); Node last = GetLastNode(); if (last == null) { //集合中目前还没有元素 _head = new Node(data); } else { last.Next = current; } } private Node GetLastNode() { Node last = _head; while(last != null && last.Next != null) { last = last.Next; } return last; } public IEnumerator
GetEnumerator() { Node current = _head; while(current != null) { yield return current.Data; current = current.Next; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }

 

Program.cs

public class Program    {        static void Main(string[] args)        {            MyCustomerList
myList = new MyCustomerList
(); myList.AddToLast(10); myList.AddToLast(20); myList.AddToLast(30); myList.AddToLast(40); Show(myList); myList.AddToHead(5); myList.AddToHead(3); Show(myList); MyCustomerList
teachers = new MyCustomerList
(); teachers.AddToLast(new Teacher() { Name = "张三", Age = 26, Birthday = new DateTime(1985,8,7) }); teachers.AddToLast(null); teachers.AddToLast(new Teacher() { Name = "李四", Age = 27, Birthday = new DateTime(1984, 8, 7) }); teachers.AddToLast(new Teacher()); Show(teachers); Console.ReadLine(); } static void Show
(MyCustomerList
myList) { Console.WriteLine("\n准备遍历集合中的内容:"); foreach (var item in myList) { Console.WriteLine(item); } Console.WriteLine("遍历结束\n"); } } public class Teacher { public Teacher() { } public Teacher(string name, int age, DateTime birthday) { this.Name = name; this.Age = age; this.Birthday = birthday; } public string Name { get; set; } public int Age { get; set; } public DateTime Birthday { get; set; } public override string ToString() { return string.Format("大家好,我叫 {0}, 今年 {1} 岁,出生日期:{2}",Name,Age,Birthday); } }

 

运行截图:

谢谢浏览!

转载于:https://www.cnblogs.com/Music/archive/2011/12/07/custom-enumerator-and-single-linked-list.html

你可能感兴趣的文章
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
由级别和性格特征将程序员分类 ---看看你属于哪一种
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
对我来说,只有一件事情是重要的
查看>>
完整的Socket代码
查看>>
PE知识复习之PE的导入表
查看>>
POJ 3280 Cheapest Palindrome
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
Objective-C非正式协议与正式协议
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
SPOJ DQUERY D-query(主席树 区间不同数个数)
查看>>
八 Civil3d常用显示样式的编辑与创建 ----点标签样式2
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
生产阶段Webpack打包【基础打包】
查看>>
Cortex M3/M4 学习摘要(二)
查看>>
C#时间的味道——任时光匆匆我只在乎你
查看>>
(1)数据结构——线性表(数组)实现
查看>>
SpringMyBatis解析2-SqlSessionFactoryBean
查看>>