数据结构---单链表
单链表
链表是被称为节点的类对象的群集。每一个节点通过一个引用链接到列表内的后继节点上。节点包括存储数据的字段和节点引用的字段。到另外一个节点的引用被称为是链接。
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项目开发。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!