예제 #1
0
        public GenChain <T> GetElt(int subscript)
        {
            GenChain <T> elt = First;

            for (int i = 0; i < subscript; i++)
            {
                if (elt == null)
                {
                    return(null);
                }
                elt = elt.Next;
            }
            return(elt);
        }
예제 #2
0
 public void AddElt(T element)
 {
     if (First == null)
     {
         First = new GenChain <T> {
             Value = element
         };
     }
     else
     {
         GenChain <T> last = Last;
         last.Next = new GenChain <T> {
             Value = element, Previous = last
         };
     }
 }
예제 #3
0
 public void Insert(T elt, int subscript)
 {
     if (subscript == 0)
     {
         if (First == null)
         {
             First = new GenChain <T> {
                 Value = elt
             };
         }
         else
         {
             GenChain <T> temp = First;
             First = new GenChain <T> {
                 Value = elt, Next = temp
             };
             temp.Previous = First;
         }
     }
     else
     {
         GenChain <T> temp = GetElt(subscript);
         if (temp == null)
         {
             AddElt(elt);
         }
         else
         {
             GenChain <T> previous     = temp.Previous;
             GenChain <T> previousNext = previous.Next;
             previous.Next = new GenChain <T> {
                 Value = elt, Next = previousNext, Previous = previous
             };
             temp.Previous = previous.Next;
         }
     }
 }