C#它配备了一个泛型列表类,在很多情况下,足以。实际应用中遇到。最好的报价C#该链表,包装成自己的阶级需求。

该名单的努力的原则,基本实现探索实施一些简单的方法。

一个、(Node.cs文件)作为一类节点列表。它被封装在内部列表类。

原因是客户在使用链表时不须要关注链表的节点类型。

<span style="font-family:Courier New;">using System;

namespace LinkListTrial0._2
{
partial class MyLinkedList<T>
{
class Node<DataType>:IComparable<DataType>,IEquatable<DataType>
where DataType:IComparable
{
DataType data;
Node<DataType> next;
public Node<DataType> Next
{
get
{
return this.next;
}
set
{
this.next = value;
}
} public Node(DataType data)
{
this.data = data;
this.next = null;
} // 比較接口的实现,直接比較链表节点与数据
public int CompareTo(DataType obj)
{
DataType objData = (DataType)obj;
return this.data.CompareTo(objData);
} // 相等接口的实现,直接比較链表节点与数据
public bool Equals(DataType to_compare)
{
return this.data.Equals(to_compare);
} // 打印数据
public override string ToString()
{
// TODO:能够加一些打印链接的创意
return this.data.ToString();
}
}
} }</span>

二、(MyLinkedList.cs文件)实现简单链表的类。存放实现链表的主要逻辑。

主要目的是实现简单链表的添加和删除逻辑。

<span style="font-family:Courier New;">using System;

namespace LinkListTrial0._2
{
partial class MyLinkedList<T>
where T:IComparable
{
Node<T> Head;
public MyLinkedList()
{
// 在链表头部放置一个虚拟节点。简化逻辑
Node<T> dummy = new Node<T>(default(T));
this.Head =dummy;
} public void AddAscend(T to_add)
{
Node<T> currentNode = Head;
Node<T> nextNode; // 升序排列数据
for ( nextNode = currentNode.Next ; nextNode!=null && nextNode.CompareTo(to_add) < 0; )
{
currentNode = nextNode;
nextNode = currentNode.Next;
} // 忽略反复数据
if (nextNode!=null && nextNode.Equals(to_add))
{
return;
} // 插入新来的非反复数据
Node<T> toaddNode = new Node<T>(to_add);
currentNode.Next = toaddNode;
toaddNode.Next = nextNode;
} public void Delete(T to_delete)
{
Node<T> currentNode = Head;
Node<T> nextNode; // 检測全部数据是否与待删除的数据相等
for (nextNode=currentNode.Next;!( nextNode==null || nextNode.Equals(to_delete)); )
{
currentNode = nextNode;
nextNode = currentNode.Next;
} // 从中间删除数据
if (nextNode != null)
{
currentNode.Next = nextNode.Next;
}
} public void Clear()
{
// 清空全部数据
this.Head.Next = null;
} public void PrintAll()
{
Node<T> currentNode = Head;
Node<T> nextNode; for (nextNode=currentNode.Next; nextNode!=null; )
{
Console.WriteLine(nextNode.ToString());
currentNode = nextNode;
nextNode = currentNode.Next;
}
}
}
}</span>

三、(Program.cs文件)简单的測试程序。

<span style="font-family:Courier New;">using System;

namespace LinkListTrial0._2
{
class Program
{
static void Main(string[] args)
{
MyLinkedList<int> list = new MyLinkedList<int>();
list.Clear();
list.AddAscend(1);
list.AddAscend(6);
list.AddAscend(1);
list.AddAscend(3);
list.AddAscend(4);
list.AddAscend(2);
list.AddAscend(5);
list.AddAscend(6);
list.PrintAll(); Console.WriteLine("----------------------------------------------"); list.Delete(6);
list.Delete(7);
list.PrintAll(); Console.ReadLine(); }
}
}</span>

四、小结

1、实现了简单的列表。

2、没有考虑性能的因素。

3、数据是相对固定的,应该依据使用情况灵活调整数据结构。

版权声明:本文博客原创文章,博主不同意(mailto:cqwd2010@qq.com)版权所有。

C#名单:一个简单的实现的更多相关文章

  1. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  2. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  3. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

  4. 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库

    57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...

  5. 如何开发一个简单的HTML5 Canvas 小游戏

    原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...

  6. CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能

    CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能 效果图 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型 ...

  7. CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator

    CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator 我还没有用过Compute Shader,所以现在把红宝书里的例子拿来了,加入CSharpGL中. ...

  8. 应用OpenMP的一个简单的设计模式

    小喵的唠叨话:最近很久没写博客了,一是因为之前写的LSoftmax后馈一直没有成功,所以在等作者的源码.二是最近没什么想写的东西.前两天,在预处理图片的时候,发现处理200w张图片,跑了一晚上也才处理 ...

  9. 用php实现一个简单的链式操作

    最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen( ...

  10. 一个简单的webservice的demo(下)winform异步调用webservice

    绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...

随机推荐

  1. zoj 3822 Domination (可能性DP)

    Domination Time Limit: 8 Seconds      Memory Limit: 131072 KB      Special Judge Edward is the headm ...

  2. Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍

    原文 Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍 前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iO ...

  3. Setup Git Server in CentOS 6.3

    0. Environment: Server machine: CentOS 6.3 x86 Client machine: Windows 10 Pro x86_64 1. Install ssh ...

  4. BZOJ 1975 SDOI2010 魔法猪学院 A*k短路

    题目大意:给定一个值E 求起点到终点的最多条路径 使长度之和不超过E k短路的A*算法--每一个点有一个估价函数=g[x]+h[x] 当中g[x]是从源点出发已经走了的长度 h[x]是从这个点到汇点的 ...

  5. 上传App时遇IDFA错误问题

    今天上传App时遇到下图1的情况,很纳闷,又是苹果新规. 通常是第三方的库引起啦,马上想到百度统计了,打开SDK下载页面看看简单介绍,里面有讲到这个问题了. 图2就是这次改动的原因. 更新SDK,之前 ...

  6. 怎么样excel其产生的条形码(10分钟的时间excel)从而出现了条形码

    现在快递行业.京东购物,这样一来,使用条码管理,因此,如何在你的excel其中还生产商品条码管理它?其实很easy,4步骤学会!10分钟搞定. 1.从网址如下.下载字体, 2.双击安装字体. 3,在e ...

  7. Nim博弈游戏

    给定n堆石子,每次每人能从一堆石子中取若干个石子(不能不取),最后不能取石子者败 对于这个游戏,我们要判断的是,给定局势下,先手者胜还是败 设先手胜的局势为N-postion,先手败的局势为P-pos ...

  8. 动画(Animation) 它 (闪烁、左右摇摆、跷跷板等功效)

    一侧到另一侧的影响: (这里显示的是并不那么顺利) 一.续播  (不知道取什么名字好,就是先播放动画A, 接着播放动画B) 有两种方式. 第一种.分别动画两个动画,A和B, 然后先播放动画A,设置A ...

  9. sensor调试过程HAL层数据不能被转移到app

    最近调试e-compass传感器,我遇到了一个奇怪的问题,驱动器正常报告数据.但该数据到HAL后该层已经无法上传app. 经debug,我发现这是一个供应商派的代码存在bug,open的fd没有设置N ...

  10. unrecognized selector sent to instance 0x10b34e810

    一个错误: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURLEr ...