自定义表链 SnakList
两种方式实现表链:第二种性能差

using System;
using System.Collections; namespace Galaxy
{
class Program
{ static void Main(string[] args)
{
SnakList<string> san = new(); string xiaoming = "小米";
string xiaoming1 = "1小米";
san.SnakListAdd("dfdfdfsf1");
san.SnakListAdd("dfdfdfsf2");
san.SnakListAdd("dfdfdfsf3");
san.SnakListAdd(xiaoming);
san.SnakListAdd(xiaoming1);
Console.WriteLine(san.Length);
foreach (var sa in san)
{ Console.WriteLine(sa); }
} }
public class SnakList<T> : IEnumerable
{ private Node snakHead = null;//表链头
private int length = 0;//计数器
private Node snakTail = null;
private Node current = null;// 游标
public int Length { get => length; set => length = value; } public void SnakListAdd(T Tn)
{ Node newNode = new(Tn); /* //第一种 栈链 先进后出
newNode.Next = snakHead;
snakHead = newNode;*/ //第二种添 队列(queue) 先进先出 if (length == 0)
{ snakHead = newNode; snakTail = newNode; }
else
{ snakTail.Next= newNode;
snakTail = newNode;
} this.Length += 1; }
IEnumerator IEnumerable.GetEnumerator()
{
current = snakHead;
while (current is not null)
{
yield return current; current = current.Next;
} } public T this[T sd]
{
get
{ Node se = new(sd); current = snakHead;
while (current is not null)
{
if (current.Date.Equals(se.Date)) return current.Date; current = current.Next;
}
return default; }
} //嵌套类不能申明为public类型, 使嵌套类型在外部可见违反了代码质量规则 CA1034
//嵌套类不需要用 泛型,因为外类的泛型参数在子类可以使用
class Node
{
private T date;
private Node next;
public Node()
{
} public Node(T node)
{ this.date = node;
Next = null; } public T Date { get => date; set => date = value; }
public Node Next { get => next; set => next = value; }
public override string ToString()
{
return date.ToString(); }
} } }
自定义表链 SnakList的更多相关文章
- Joomla - 模块系统(新建模块、模块类别、自定义模块)
Joomla - 模块系统,模块配合模板的布局设置.菜单分配.权限分配能创建出一个内容丰富且易于管理的高度自定义前端页面架构 一.新建模块 进入后台,点击顶栏菜单 扩展管理 -> 模块管理 ,进 ...
- 关于Unity3D自定义编辑器的学习
被人物编辑器折腾了一个月,最终还是交了点成品上去(还要很多优化都还么做). 刚接手这项工作时觉得没概念,没想法,不知道.后来就去看<<Unity5.X从入门到精通>>中有关于 ...
- 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表
1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...
- JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色.但是css ...
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- ASP.NET Aries 入门开发教程5:自定义列表页工具栏区
前言: 抓紧时间,继续写教程,因为发现用户期待的内容,都在业务处理那一块. 不得不继续勤劳了. 这节主要介绍工具栏区的玩法. 工具栏的默认介绍: 工具栏默认包括5个按钮,根据不同的权限决定显示: 添加 ...
- UWP中实现自定义标题栏
UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...
- JavaScript 自定义对象
在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...
- 【WCF】自定义错误处理(IErrorHandler接口的用法)
当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...
随机推荐
- 请解释final finally finalize的区别
final 关键字 ,可以定义不能被继承的父类.定义不能被重写的方法,常量 finally 关键字, 异常处理的统一出口 不管是否有异常都执行 finalize 方法(protected ...
- linux下查看 SELinux状态及关闭SELinux
SELinux全称为安全增强式 Security-Enhanced Linux(SELinux),是一个在内核中实践的强制存取控制(MAC)安全性机制.SELinux 首先在 CentOS 4 出现, ...
- HashMap相关
final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] ta ...
- 【故障公告】数据库服务器 CPU 100% 引发全站故障
今天 11:12-12:03 期间,园子使用的阿里云 RDS 实例(SQL Server2016 标准版,16核CPU)出现 CPU 100% 问题,引发全站故障,由此给您带来麻烦,请您谅解. 发现故 ...
- Vue之 css3 样式重置 代码
reset.css @charset "utf-8";html{background-color:#fff;color:#000;font-size:12px} body,ul,o ...
- Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
datetime 时间和日期模块 datetime 模块提供了以简单和复杂的方式操作日期和时间的类.虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作.该模块还支持可感知时区的 ...
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- spring 注解注入bean
通过注解方式注入bean,需要在配置类下注入bean 第一步,配置扫描文件夹 首先要在spring.xml中配置需要扫描的配置类 <context:componenet-scan base-pa ...
- 一致性协议之ZAB
前言 一致性协议 包括 Paxos,Raft,2PC,3PC等等,今天我们讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了.为什么呢?因为他是为 Zookeeper 设计的 ...
- iOS WKWebView 使用笔记
首先添加Webkit框架