using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.IO;
using System.Collections; namespace ConsoleApplication2
{
public class Program
{
public static void Main()
{
SinglyLinked<int> noteLink = new SinglyLinked<int>(); Console.WriteLine("新增数据");
noteLink.AddNote();
noteLink.AddNote();
noteLink.AddNote();
noteLink.AddNote();
noteLink.AddNote();
foreach (var item in noteLink)
{
Console.WriteLine(item);
} Console.WriteLine("删除数据2");
noteLink.RemoveNote();
foreach (var item in noteLink)
{
Console.WriteLine(item);
} Console.WriteLine("在8前面增加99");
noteLink.InsertItemBefore(,); foreach (var item in noteLink)
{
Console.WriteLine(item);
} Console.WriteLine("在1后面增加55");
noteLink.InsertItemAfter(,);
foreach (var item in noteLink)
{
Console.WriteLine(item);
} Console.WriteLine("节点数量:"+noteLink.Count); Console.Read();
}
} public class SinglyLinked<T> where T : IComparable
{
public DNote<T> HeadNote; public int Count{get;set;} public SinglyLinked()
{
HeadNote = new DNote<T>(default(T));
} public void AddNote(T t)
{
DNote<T> tNote = HeadNote;
while (tNote.NextNote!= null)
{
tNote = tNote.NextNote;
} tNote.NextNote = new DNote<T>(t); Count++;
} public IEnumerator<T> GetEnumerator()
{
DNote<T> tNote = HeadNote;
while (tNote.NextNote != null)
{
tNote = tNote.NextNote;
yield return tNote.NoteValue;
}
} public void RemoveNote(T t)
{
DNote<T> tNote = HeadNote;
do
{
if (tNote.NextNote.NoteValue.CompareTo(t) == )
{
tNote.NextNote = tNote.NextNote.NextNote;
Count--;
}
tNote = tNote.NextNote;
} while (tNote!=null && tNote.NextNote!=null);
} public void InsertItemBefore(T t,T insertNoteValue)
{
DNote<T> tNote = HeadNote;
do
{
if (tNote.NextNote.NoteValue.CompareTo(t) == )
{
var nextNote = tNote.NextNote;
var newNote = new DNote<T>(insertNoteValue);
newNote.NextNote = nextNote;
tNote.NextNote = newNote;
Count++;
break;
}
tNote = tNote.NextNote;
} while (tNote != null && tNote.NextNote != null);
} public void InsertItemAfter(T t, T insertNoteValue)
{
DNote<T> tNote = HeadNote;
do
{
if (tNote.NextNote.NoteValue.CompareTo(t) == )
{
var nextNote = tNote.NextNote.NextNote;
var newNote = new DNote<T>(insertNoteValue);
newNote.NextNote = nextNote;
tNote.NextNote.NextNote = newNote;
Count++;
break;
}
tNote = tNote.NextNote;
} while (tNote != null && tNote.NextNote != null);
}
} public class DNote<T>
{
public DNote<T> NextNote { get; set;} public T NoteValue { get; set; } public DNote(T t)
{
NoteValue = t;
}
} }

单向链表(C#)的更多相关文章

  1. Reverse Linked List II 单向链表逆序(部分逆序)

    0 问题描述 原题点击这里. 将单向链表第m个位置到第n个位置倒序连接.例如, 原链表:1->2->3->4->5, m=2, n =4 新链表:1->4->3-& ...

  2. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点

    第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;Lis ...

  3. 输出单向链表中倒数第k个结点

    描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* ...

  4. Linus:利用二级指针删除单向链表

    Linus大神在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level codi ...

  5. 【转】Linus:利用二级指针删除单向链表

    原文作者:陈皓 原文链接:http://coolshell.cn/articles/8990.html 感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多, ...

  6. C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)

    #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...

  7. 数据结构——Java实现单向链表

    结点类: /** * @author zhengbinMac * 一个OnelinkNode类的对象只表示链表中的一个结点,通过成员变量next的自引用方式实现线性表中各数据元素的逻辑关系. */ p ...

  8. 输入一个单向链表,输出该链表中倒数第K个结点

    输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { publ ...

  9. 单向链表JAVA代码

        //单向链表类 publicclassLinkList{       //结点类     publicclassNode{         publicObject data;         ...

  10. C++ 单向链表反转

    单向链表反转,一道常见的面试题,动手实现下. #include "stdafx.h" #include <stdlib.h> struct Node{ int data ...

随机推荐

  1. 转 如何不耍流氓的做运维之——SHELL脚本

    家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写 SHELL 脚本如何能够不耍流氓. 下面的案例,我们以 MySQL 数据库备份 SHELL 脚本的案例来进行阐述. 不记录 ...

  2. XAMPP(v1.83)中的PHP(v5.5.15)访问SQLServer2014

    驱动安装: 1. 下载SQLServer的微软官方PHP驱动,http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx 2. 安装SQLSRV31 ...

  3. thunk技术

    Thunk : 将一段机器码对应的字节保存在一个连续内存结构里, 然后将其指针强制转换成函数. 即用作函数来执行,通常用来将对象的成员函数作为回调函数. #include "stdafx.h ...

  4. git 强制覆盖本地文件

    git fetch --all git reset --hard origin/master git pull

  5. 单元测试、自动化测试、接口测试过程中的Excel数据驱动(java实现)

    import java.io.FileInputStream;import java.io.InputStream;import java.util.HashMap;import java.util. ...

  6. Theos tweak MSHookFunction

    #import "substrate.h" static FILE * (*s_orig_fopen) ( const char * filename, const char * ...

  7. AutoTile 自动拼接(一) 学习与实践

    恩,大家好,这两天江苏冷空气袭击,下了今年 第一场第二场雪. 不过今天我要说的 ,和 上面的 屁关系都没有. 今天要说的是 2d无缝自动拼接.大家有没有玩过  RPG Maker VX Ace. 类似 ...

  8. climit 头文件的内容

    int.long和long long C++的short.int.long和long long类型通过使用不同数目的位来存储值(关于位的概念自行了解),最多能够表示4中不同的整数宽度.C++提供了一种 ...

  9. js表单提交,判断文本框,用户名密码是否为空,JS表单检测!

    当表单提交时先触发验证的js代码,当验证表单的方法返回true时才会提交表单返回false则不提交数据<script type="text/javascript">fu ...

  10. 转:jmeter性能测试---登录百度进行搜索

    在做web程序性能测试时,loadrunner和jmeter是两款常用的工具,两者比较起来,jmeter非常轻巧,且开源免费,上手快.这里简单介绍下jmeter的使用,以登录百度进行搜索为例. jme ...