数据结构---单链表
单链表
链表是被称为节点的类对象的群集。每一个节点通过一个引用链接到列表内的后继节点上。节点包括存储数据的字段和节点引用的字段。到另外一个节点的引用被称为是链接。

using System;
using System.Collections.Generic;
namespace DDataStructures
{
internal class ListNode<T>
{
private T value;
public ListNode()
{
Next = null;
}
public ListNode(T value)
: this()
{
this.value = value;
}
public T Value
{
//只读
get { return this.value; }
}
public ListNode<T> Next
{
get;
set;
}
}
public class LinkList<T>
{
private ListNode<T> m_Head;
private ListNode<T> m_End;
private int m_Count;
EqualityComparer<T> m_Comparer = EqualityComparer<T>.Default;
public LinkList()
{
m_Head = new ListNode<T>();
m_End = m_Head;
}
public bool IsEmpty { get { return m_Head.Next == null; } }
private ListNode<T> Find(T item,out int index)
{
ListNode<T> current = m_Head.Next;
index = 0;
while (current!=null&&!m_Comparer.Equals(item,current.Value))
{
current = current.Next;
index++;
}
if (current == null) index = -1;
return current;
}
private ListNode<T> FindPrevious(T item)
{
ListNode<T> current = m_Head;
while (current.Next!=null&&!m_Comparer.Equals(item,current.Next.Value))
{
current = current.Next;
}
return current;
}
public void Add(T item)
{
ListNode<T> current = new ListNode<T>(item);
m_End.Next = current;
m_End = current;
m_Count++;
}
public void Insert(int index, T item)
{
if (index < 0 || index >= this.m_Count)
throw new ArgumentOutOfRangeException("index", index, "index value is out of range,please check!");
ListNode<T> current = this.m_Head;
ListNode<T> node = new ListNode<T>(item);
while (index-- > 0) current = current.Next;
node.Next = current.Next;
current.Next = node;
if (m_End.Next != null) m_End = node;
m_Count++;
}
public void Remove(T item)
{
ListNode<T> p = FindPrevious(item);
if (p.Next != null)
{
p.Next = p.Next.Next;
m_Count--;
}
}
public void PrintList()
{
ListNode<T> current = m_Head;
while (current.Next!=null)
{
Console.WriteLine(current.Next.Value);
current = current.Next;
}
}
}
}
参考:http://blog.csdn.net/sukhoeing/archive/2007/10/18/1831657.aspx
作 者:doku
出 处:http://www.cnblogs.com/kulong995/
关于作者:喜欢编程,喜欢美食,专注于.NET项目开发。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!


浙公网安备 33010602011771号