Beispiel #1
0
        public void PrintFwd()
        {
            CDLL <T> node = this;

            do
            {
                Console.WriteLine(node.val);
                node = node.next;
            } while (node != this);
            Console.WriteLine();
        }
Beispiel #2
0
        public void CopyInto(T[] vals, int i)
        {
            CDLL <T> node = this;

            do
            {
                try
                {
                    vals[i++] = node.val;
                    node      = node.next;
                }
                catch
                {
                    return;
                }
            } while (node != this);
        }
Beispiel #3
0
        public int Size()
        {
            int      count = 0;
            CDLL <T> node  = this;

            do
            {
                count++;
                try
                {
                    node = node.next;
                }
                catch
                {
                    return(0);
                }
            } while (node != this);
            return(count);
        }
Beispiel #4
0
 public CDLL <T> Append(CDLL <T> elt)
 {
     elt.prev = this; elt.next = next; next.prev = elt; next = elt;
     return(elt);
 }
Beispiel #5
0
 public CDLL <T> Prepend(CDLL <T> elt)
 {
     elt.next = this; elt.prev = prev; prev.next = elt; prev = elt;
     return(elt);
 }
Beispiel #6
0
 // Удаление: сделать так чтобы элемент указывал вникуда
 public void Delete()
 {
     next.prev = prev; prev.next = next;
     next      = prev = null;
 }
Beispiel #7
0
 // Новый список - один элемент завязанный на себя
 public CDLL(T val)
 {
     this.val = val; next = prev = this;
 }