Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Add a GetMiddle method to the linked list class (OurList). It returns the middle

ID: 3887023 • Letter: A

Question

Add a GetMiddle method to the linked list class (OurList). It returns the middle Data item from the list. If there are 0 or 1 items on the list, throw something.

public class OurList
    {
        private class OurListNode
        {
            public T Data { get; set; }
            public OurListNode Next { get; set; }
            public OurListNode(T d = default(T), OurListNode ln = null)
            {
                Data = d;
                Next = ln;
            }
        }

        private OurListNode mFirst;

        public OurList()
        {
            mFirst = null;
        }

        public void Clear()   
        {
            mFirst = null;
        }

        public void AddFirst(T data)   
        {
            mFirst = new OurListNode(data, mFirst);
        }

        public void RemoveFirst()   
        {
            if (mFirst != null)
                mFirst = mFirst.Next;
        }

        public void AddLast(T data)   
        {
            if (mFirst == null)
                AddFirst(data);
            else
            {
                OurListNode mTmp = mFirst;
                while (mTmp.Next != null)
                    mTmp = mTmp.Next;

                mTmp.Next = new OurListNode(data, null);
            }
        }

        public void RemoveLast()   
        {
            if (mFirst == null)
                return;
            else if (mFirst.Next == null)
                RemoveFirst();
            else
            {
                OurListNode pTmp = mFirst;
                while (pTmp.Next != null && pTmp.Next.Next != null)
                    pTmp = pTmp.Next;

                pTmp.Next = null;
            }
        }

        public void Display()   
        {
            OurListNode pTmp = mFirst;
            while (pTmp != null)
            {
                Console.Write("{0}, ", pTmp.Data);
                pTmp = pTmp.Next;
            }
            Console.WriteLine();
        }

        public bool isEmpty()   
        {
            if (mFirst == null)
                return true;
            else
                return false;
        }
     }

Explanation / Answer

public class OurList
    {
        private class OurListNode
        {
            public T Data { get; set; }
            public OurListNode Next { get; set; }
            public OurListNode(T d = default(T), OurListNode ln = null)
            {
                Data = d;
                Next = ln;
            }
        }

        private OurListNode mFirst;

        public OurList()
        {
            mFirst = null;
        }

        public void Clear()   
        {
            mFirst = null;
        }

        public void AddFirst(T data)   
        {
            mFirst = new OurListNode(data, mFirst);
        }

        public void RemoveFirst()   
        {
            if (mFirst != null)
                mFirst = mFirst.Next;
        }

        public void AddLast(T data)   
        {
            if (mFirst == null)
                AddFirst(data);
            else
            {
                OurListNode mTmp = mFirst;
                while (mTmp.Next != null)
                    mTmp = mTmp.Next;

                mTmp.Next = new OurListNode(data, null);
            }
        }

        public void RemoveLast()   
        {
            if (mFirst == null)
                return;
            else if (mFirst.Next == null)
                RemoveFirst();
            else
            {
                OurListNode pTmp = mFirst;
                while (pTmp.Next != null && pTmp.Next.Next != null)
                    pTmp = pTmp.Next;

                pTmp.Next = null;
            }
        }

        public void Display()   
        {
            OurListNode pTmp = mFirst;
            while (pTmp != null)
            {
                Console.Write("{0}, ", pTmp.Data);
                pTmp = pTmp.Next;
            }
            Console.WriteLine();
        }

        public bool isEmpty()   
        {
            if (mFirst == null)
                return true;
            else
                return false;
        }

public void GetMiddle(){
              int count = 0;
               OurListNode mid = mFirst;
               OurListNode currentNodePtr = mFirst;
          
                while (currentNodePtr != null)
                {
                    if ((count & 1) == 1)
                        mid = mid.Next;
          
                    ++count;
                    currentNodePtr = currentNodePtr.Next;
                }
          
                if (mid != null)
                   Console.Write("{0}, ", mid.Data);
                else
                   Console.Write("Middle Element does not exists");
           }

     }

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote