public bool TryGetItem(int index, out T t) { t = default(T); SingleListNode <T> CurrNode = HeadNode; int i = 0; while (CurrNode != null && i < index) { CurrNode = CurrNode.Next; i++; } if (i != index || CurrNode == null) { return(false); } if (CurrNode.Next == null) { return(false); } t = CurrNode.Next.Value; return(true); }
public bool Insert(int index, T newElem) { SingleListNode <T> CurrNode = HeadNode; int i = 0; while (CurrNode != null && i < index) { CurrNode = CurrNode.Next; i++; } Console.WriteLine(string.Format("Insert pos({0}) Value:{1} ", index, newElem)); if (i != index || CurrNode == null) { Console.WriteLine("Pos Error!"); return(false); } CurrNode.Next = new SingleListNode <T>(newElem) { Next = CurrNode.Next }; Console.WriteLine("Succeed!"); return(true); }
public bool Delete(int index, out T t) { SingleListNode <T> CurrNode = HeadNode; int i = 0; t = default(T); while (CurrNode != null && i < index) { CurrNode = CurrNode.Next; i++; } if (i != index || CurrNode == null) { Console.WriteLine("Pos Error!"); return(false); } if (CurrNode.Next == null) { return(false); } t = CurrNode.Next.Value; CurrNode.Next = CurrNode.Next.Next; return(true); }
public bool Append(T t) { SingleListNode <T> CurrNode = HeadNode; while (CurrNode.Next != null) { CurrNode = CurrNode.Next; } CurrNode.Next = new SingleListNode <T>(t) { Next = null }; return(true); }
public T this[int index] { get { SingleListNode <T> CurrNode = HeadNode; int i = 0; while (CurrNode != null && i < index) { CurrNode = CurrNode.Next; i++; } if (i != index || CurrNode == null) { throw new Exception("Index Error"); } if (CurrNode.Next == null) { throw new Exception("Index Error"); } return(CurrNode.Next.Value); } set { SingleListNode <T> CurrNode = HeadNode; int i = 0; while (CurrNode != null && i < index) { CurrNode = CurrNode.Next; i++; } if (i != index || CurrNode == null) { throw new Exception("Index Error"); } if (CurrNode.Next == null) { throw new Exception("Index Error"); } CurrNode.Next.Value = value; } }
public int IndexOf(T t) { SingleListNode <T> CurrNode = HeadNode.Next; int i = 0; while (CurrNode != null) { if (CurrNode.Value.Equals(t)) { break; } CurrNode = CurrNode.Next; i++; } if (CurrNode == null) { return(-1); } return(i); }
/// <summary> /// 格式化 /// </summary> /// <returns>格式化字符</returns> public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("["); SingleListNode <T> CurrNode = HeadNode.Next; while (CurrNode != null) { stringBuilder.Append(CurrNode.Value); if (CurrNode.Next != null) { stringBuilder.Append(","); } CurrNode = CurrNode.Next; } stringBuilder.Append("]"); return(stringBuilder.ToString()); }
public SingleLinkedList() { HeadNode = new SingleListNode <T>(default(T)); HeadNode.Next = null; }