Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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;
            }
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        /// <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());
        }
Beispiel #8
0
 public SingleLinkedList()
 {
     HeadNode      = new SingleListNode <T>(default(T));
     HeadNode.Next = null;
 }