Пример #1
0
 /// <summary>
 /// 移动到下一个对象
 /// </summary>
 /// <returns></returns>
 public bool MoveNext()
 {
     if (current.Next == null)
     {
         return(false);
     }
     current = current.Next;
     return(true);
 }
Пример #2
0
        /// <summary>
        /// 以0为基数,在位置i,加入对象,如果要加到队列最后,使用PushBack
        /// </summary>
        public void InsertAt(T t, int i)
        {
            var block    = GetBlockAt(i);
            var newBlock = new LinkBlock <T>(t);

            newBlock.Front = block.Front;
            newBlock.Next  = block;
            block.Front    = newBlock;
            ++Count;
        }
Пример #3
0
        private LinkBlock <T> GetBlockAt(int i)
        {
            if (i >= Count)
            {
                throw new ArgumentOutOfRangeException();
            }

            LinkBlock <T> result = null;

            for (int j = 0; j <= i; ++j)
            {
                result = HiddenRoot.Next;
            }
            return(result);
        }
Пример #4
0
 /// <summary>
 /// 在List尾部加入数据t
 /// </summary>
 /// <param name="t">数据</param>
 public void PushBack(T t)
 {
     if (Head == null)
     {
         Head            = Tail = new LinkBlock <T>(t);
         Head.Front      = HiddenRoot;
         HiddenRoot.Next = Head;
     }
     else
     {
         var newBlock = new LinkBlock <T>(t);
         newBlock.Front = Tail;
         Tail.Next      = newBlock;
         Tail           = newBlock;
     }
     ++Count;
 }
Пример #5
0
 /// <summary>
 /// 创建LinkList实例
 /// </summary>
 public LinkList()
 {
     HiddenRoot = new LinkBlock <T>(default(T));
     current    = HiddenRoot;
     Count      = 0;
 }
Пример #6
0
 /// <summary>
 /// 重置遍历
 /// </summary>
 public void Reset()
 {
     current = HiddenRoot;
 }