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. JAVA 命令参数详解System.setProperty(

    JAVA 命令参数详解: 1.-D<name>=<value> set a system property  设置系统属性. java -D参数简化加入多个jar java命令 ...

  2. HT for Web嵌入QtWebKit的client解决方式

    HTML5已经足够强大,但非常多应用还是须要独立桌面client的解决方式,毕竟能操作本地文件等功能还是非常多工具类软件短期内无法全然採用云方案替代. 近期Adobe公布的http://bracket ...

  3. Zabbix的数据表结构

    看到Zabbix的数据表结构吧,就知道数据量大了 性能问题很让人担忧,不过基于Zabbix数据库导出报表,或自动跑报表的时候,就必须去了解一下zabbix的数据表结构了,得知道XX放在哪才能找到XX, ...

  4. HDU ACM 1071 The area 定积分计算

    分析: 1.求抛物线方程F(x)=a*x^2+b*x+c: 2.求直线方程f(x)=k*x+b. 3.利用定积分计算F(x)-f(x)在x2到x3之间的面积. #include<iostream ...

  5. linux上安装Drupal

    linux上安装Drupal 前言:国内用drupal的并不太多,网上资料也很少.要注意的是drupal尽量别使用apt来安装,特别是ubuntu平台的drupal做出了一定的更改,会妨碍后期的学习和 ...

  6. sql server事物控制

    一.多个数据库 1.存储过程 2.Commit写在 Try...Catch后面 protected void Button1_Click(object sender, EventArgs e)    ...

  7. CentOS 安装apache 及所需的 apr,apr-util,pcre

    安装apache前确定已安装 apr,apr-util,pcre 一.安装apr [root@xt test]# tar -zxf apr-1.4.5.tar.gz [root@xt test]# c ...

  8. QoS令牌桶工作原理

    QoS的一个重要作用就是对port流量进行监管,也就是限制port流量.但QoS是怎样做到这点的呢?那就是QoS的令牌桶机制了.以下是在笔者刚刚出版的<Cisco/H3C交换机高级配置与管理技术 ...

  9. JDBC batch批量Statement executeBatch 详细解释

    JDBC提供了数据库batch处理的能力,在数据大批量操作(新增.删除等)的情况下能够大幅度提升系统的性能.我曾经接触的一个项目,在没有採用batch处理时,删除5万条数据大概要半个小时左右,后来对系 ...

  10. 冒泡排序----java实现

    冒泡排序思路:第1次:顺序比较从第0个到第len个(相邻两个)元素并把大的放后面,第一次进行完后,最大                                         的元素会在最后: ...