封装一个集合
提供push(T value)在尾部添加新元素,
pop()删除并返回最后一个元素,、
shift()删除并返回第一个元素,
unshift(T value)在首位添加新元素;
底层用链表模式保存数据
实现用foreach循环自定义集合

 class MyCollecion<T> : IEnumerable<T>{LinkedList<T> arr = new LinkedList<T>();public LinkedListNode<T> First{get{return arr.First;}}//在尾部添加新元素public void Push(T value){arr.AddLast(value);}//删除并返回最后一个元素public T Pop(){LinkedListNode<T> node = arr.Last;arr.RemoveLast();return node.Value;}//删除并返回第一个元素,public T Shift(){LinkedListNode<T> node = arr.First;arr.RemoveFirst();return node.Value;}//在首位添加新元素public void Unshift(T value){arr.AddFirst(value);}public IEnumerator<T> GetEnumerator(){return new Enumtor<T>(this);}IEnumerator IEnumerable.GetEnumerator(){throw new NotImplementedException();}}/// <summary>/// 迭代器/// </summary>/// <typeparam name="T"></typeparam>internal class Enumtor<T> : IEnumerator<T>{private MyCollecion<T> myCollecion;LinkedListNode<T> node;public Enumtor(MyCollecion<T> myCollecion){this.myCollecion = myCollecion;this.node = myCollecion.First;//初始化指向头节点}public T Current{get{LinkedListNode<T> tempNode = node;node = node.Next;return tempNode.Value;}}object IEnumerator.Current{get{return this;}}public void Dispose(){Console.WriteLine();}public bool MoveNext(){//如果节点不为空 if (node != null){return true;}return false;}public void Reset(){this.node = myCollecion.First;}}

测试类

C#集合练习题(链表LinkedListT)相关推荐

  1. Java集合框架篇-63-TreeSet集合练习题

    这篇,我们通过前面学习的TreeSet集合和比较器的知识,我们来做几个练习题.在完成练习过程中,我们重点放在问题分析这个步骤上面,只有分析的思路的正确性,才能写出正确的代码,完成编程练习题. 第一题 ...

  2. Python字典与集合练习题

    学习中遇到这样一个练习题,统计需要取快递人员名单.原题如下: 统计需要取快递人员的名单:"双十一"过后,某公司每天都能收到很多快递,门卫小李想编写一个程序统计收到快递人员的名单,以 ...

  3. Java——集合(练习题)

    例题1:产生10个1~20之间的随机数,要求随机数不能重复 import java.util.HashSet; import java.util.Random; public class Test1 ...

  4. python基础系列教程——数据结构(列表、元组、字典、集合、链表)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 基本顺序存储结构--列表与元组 Python中的基本顺序存储结构是列表与元组,在操作的复杂度上和数组完全相同,其中列表是可变数据类型, ...

  5. 【数据结构】【实验作业05】求两个集合的并集、交集、差集,集合用链表

    返回临时对象会执行析构函数 我的解决方法时在函数内部用类指针,返回类指针就不会有问题了. 不知道大家还有没有其他解决方法. 复制构造函数和重载=的区别 这里不讲述为什么要使用复制构造函数和重载=(自行 ...

  6. Map集合练习题(坐公交车)

    题目要求 [1]将以下车站对应关系的数据存储到map集合中, key:表示站编号,value:表示站名, 并遍历打印(可以不按顺序打印): 站编号和站名对应关系如下: 1 朱辛庄 2 育知路 3 平西 ...

  7. scala详细笔记(七)scala集合练习题 [函数练习题][scala案例][scala练习]

    0 经典WorkCount案例 统计文本文件中单词出现的次数 import scala.io.Source import scala.reflect.io.File /*** @Author 多易教育 ...

  8. python——集合练习题(华为笔试题)

    题目内容: 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1-1000之间的随机整数(N<=1000),N是用户输入>的,对于其中重复的数字,只保留一 ...

  9. Java集合练习题——使用List存储10个学生信息。(学生信息:姓名,年龄,成绩。统计所有姓“张”的同学的平均成绩。)

    目录 1.引言 2.代码实现 1.引言 看题目获取关键信息,首先创建一个学生类,定义三个成员属性姓名.年龄.成绩,定义有参无参构造方法和get.set方法,并重写toString方法.创建测试类进行测 ...

  10. java集合单向链表_Java实现单向链表数据结构

    本文章同步到本人的博客站点 燕归来 链表是一种数据结构,和数组同级.比如,Java中我们使用的ArrayList,其实现原理是数组.而LinkedList的实现原理就是链表了.链表在进行循环遍历时效率 ...

最新文章

  1. [RabbitMQ+Python入门经典] 兔子和兔子窝
  2. Javascript is based on signal thread
  3. 信息学奥赛一本通C++语言——1077:统计满足条件的4位数
  4. Numpy数据的操作 * dot() multiply() 的区别
  5. 软件测试行业发展前景怎么样?
  6. 漫谈软件系统测试——缺陷分析
  7. 《Head First HTML and CSS 》中英文下载链接
  8. vue当前浏览器是否为ie_vue项目检测IE浏览器版本,版本太低给出提示
  9. java dwg转pdf_java实现CAD图纸文件DWG格式转为PDF格式
  10. C# 绘制矩形方框读写内存类 cs1.6人物透视例子
  11. mysql.sock 路径_关于mysql.sock路径的问题
  12. python随机生成一个数字_如何实现python随机生成数字?
  13. linux系统硬盘 转换格式,怎么在LINUX系统里修改硬盘格式呢?
  14. Spring源码分析系列——bean创建过程分析(三)——工厂方法创建bean
  15. 来自北京大学NOIP金牌选手yxc的常用代码模板1——基础算法
  16. Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写
  17. SCI期刊写作必备(二):代码|手把手绘制目标检测领域YOLO论文常见的性能对比折线图,一键生成YOLOv7等主流论文同款图表,包含多种不同功能风格对比图表
  18. ArcGIS10.8下载及安装教程(附安装步骤)
  19. 辕剑之汉之云插曲计算机谱子,轩辕剑之汉之云主题曲_插曲_片尾曲_背景音乐所有歌曲歌词MV...
  20. 学考高考照片批量重命名,将以姓名命名改为以身份证+姓名命名

热门文章

  1. 人工智能 一种现代方法 第4章 超越经典搜索
  2. 音视频开发之旅(41)-天空盒
  3. android 整合最新X5WebView 以及离线安装教程
  4. 服务器系统怎么找便签,win7系统便签在哪里?win7系统便签功能使用教程
  5. oracle 索引问题梳理
  6. Oracle索引详解
  7. 浅谈贝叶斯网络以及贝叶斯网络处理模型不确定性
  8. 疑难杂症---共享打印机驱动安装失败0x00000bcb错误
  9. 计算机内存的存储原理,存储器原理
  10. ios 录音后播放声音变小的解决方法