Пример #1
0
        public void Delete(T data)
        {
            CList <T> temp = head;

            if (head.data.Equals(data))
            {
                if (head.next.data.Equals(data))
                {
                    head = null;
                }
                else
                {
                    while (temp.next != head)
                    {
                        temp = temp.next;
                    }
                    head      = head.next;
                    temp.next = head;
                }
                return;
            }
            while (temp.next != head)
            {
                if (temp.next.data.Equals(data))
                {
                    temp.next = temp.next.next;
                }
                temp = temp.next;
            }
        }
Пример #2
0
 public void InsertAt(T data, int pos)
 {
     if (pos == 1)
     {
         Prepend(data);
     }
     else
     {
         CList <T> newNode = new CList <T>(data);
         CList <T> temp    = head;
         int       k       = 1;
         while (temp.next != head)
         {
             if (k == pos - 1)
             {
                 newNode.next = temp.next;
                 temp.next    = newNode;
                 return;
             }
             temp = temp.next;
             k   += 1;
         }
         if (temp.next == head && k == pos - 1)
         {
             newNode.next = temp.next;
             temp.next    = newNode;
             return;
         }
         Console.WriteLine("Position invalid");
     }
 }
Пример #3
0
        public void PrintList()
        {
            if (head == null)
            {
                Console.WriteLine("List Is Empty");
                return;
            }
            CList <T> node = head;

            do
            {
                Console.Write(node.data + " ");
                node = node.next;
            } while (node != head);
            Console.WriteLine();
        }
Пример #4
0
        public void NodeCount()
        {
            if (head == null)
            {
                Console.WriteLine("List Is Empty");
                return;
            }
            CList <T> node  = head;
            int       count = 0;

            do
            {
                node   = node.next;
                count += 1;
            } while (node != head);
            Console.WriteLine($"Circular list Length is {count}");
        }
Пример #5
0
 public void Append(T data)
 {
     if (head == null)//Insert First Time
     {
         Prepend(data);
     }
     else
     {
         CList <T> temp = head;
         while (temp.next != head)
         {
             temp = temp.next;
         }
         CList <T> newNode = new CList <T>(data);
         temp.next    = newNode;
         newNode.next = head;
     }
 }
Пример #6
0
        public void Prepend(T data)
        {
            CList <T> cNode = new CList <T>(data);

            cNode.next = cNode;
            if (head == null)//Insert First Time
            {
                head = cNode;
            }
            else
            {
                CList <T> temp = head;
                while (temp.next != head)
                {
                    temp = temp.next;
                }
                cNode.next = head;
                temp.next  = cNode;
                head       = cNode;
            }
        }
Пример #7
0
        public void NodeSearch(T data)
        {
            if (head == null)
            {
                Console.WriteLine("List Is Empty");
                return;
            }
            CList <T> node  = head;
            int       count = 0;

            do
            {
                if (node.data.Equals(data))
                {
                    Console.WriteLine($"{data} found at index {count + 1}");
                    return;
                }
                node   = node.next;
                count += 1;
            } while (node != head);
            Console.WriteLine($"data not found");
        }
Пример #8
0
 public CircularLinkedList()
 {
     head = null;
 }
Пример #9
0
 public CList(T data)
 {
     this.data = data;
     this.next = null;
 }