C#泛型链表Demo
2024-08-31 14:58:30
/// <summary>
/// 节点
/// </summary>
/// <typeparam name="T"></typeparam>
public class LinkedListNode<T>
{
public LinkedListNode(T value)
{
this.Value = value;
}
public T Value { get; private set; }//值
/// <summary>
/// 后一个节点
/// </summary>
public LinkedListNode<T> Next { get; internal set; }
/// <summary>
/// 前一个节点
/// </summary>
public LinkedListNode<T> Prev { get; internal set; }
}
public class LinkedList<T> : IEnumerable<T>
{
public LinkedListNode<T> First { get; private set; }
public LinkedListNode<T> Last { get; private set; } public LinkedListNode<T> AddLast(T node)
{
var newNode = new LinkedListNode<T>(node);
if(First == null)
{
First = newNode;
Last = First;
}
else
{
LinkedListNode<T> previous = Last;
Last.Next = newNode;
Last = newNode;
Last.Prev = previous;
}
return newNode;
}
public IEnumerator<T> GetEnumerator()
{
LinkedListNode<T> current = First;
while (current!=null)
{
yield return current.Value;
current = current.Next;
}
} IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
static void Main(string[] args)
{
try
{
Console.WriteLine("**********************LinkedList<int>*********************");
var list1 = new LinkedList<int>();
list1.AddLast();
list1.AddLast();
list1.AddLast();
list1.AddLast();
foreach (var item in list1)
{
Console.WriteLine(item);
}
Console.WriteLine("*********************LinkedList<string>**********************");
var list2 = new LinkedList<string>();
list2.AddLast("");
list2.AddLast("aaaa");
list2.AddLast("bbbbb");
list2.AddLast("cccc");
foreach (var item in list2)
{
Console.WriteLine(item);
}
}
catch (Exception ex)
{
Console.WriteLine("程序出现错误:" + ex.Message);
} Console.ReadKey();
}
最新文章
- 【月入41万】Mono For Android中使用百度地图SDK
- 【转修正】sql server行版本控制的隔离级别
- NSString常用方法
- Java 泛型类型的一些限制
- java 数据流
- GTK简单了解记录
- JDK1.8源码(三)——java.lang.String 类
- Tips_发送请求时添加一个随机数参数,让浏览器每次都重新发请求到服务器
- 如何用python将一个时间序列转化成有监督学习
- Redis(1)---五种数据结构
- art-template
- 开发框架-.Net:Learun(力软敏捷开发)
- python中的upper、lower、capitalize、title
- js文件中获取${pageContext.request.contextPath}
- faker php测试数据库生成
- Both - Either - Neither English Grammar
- git rm与git rm --cached
- Springboot中的连接池
- 计蒜客 38229.Distance on the tree-1.树链剖分(边权)+可持久化线段树(区间小于等于k的数的个数)+离散化+离线处理 or 2.树上第k大(主席树)+二分+离散化+在线查询 (The Preliminary Contest for ICPC China Nanchang National Invitational 南昌邀请赛网络赛)
- Django实现数据库中表格的增删查改