вставка элемента в линейный односвязный список - C#

Формулировка задачи:

Здравствуйте! У меня вот такое задание: требуется программа, позволяющая вставлять новый элемент в линейный односвязный список после всех элементов с заданной величиной ключа код прикреплён p.s вот с процедурой добавления элемента (с 45): просто посмотрела через отладчик и в строчке 47 постоянно p.key= значению ключа последнего элемента. (если к примеру вводим 1 2 3 4 и постоянно p.key=4) Может подскажите что не так?
using System;
namespace spisok
{
    class MyList
    {
        public int key; //ключ  
        public MyList Next; //указатель на след.элемент
        public MyList() { }
        public MyList(int key, MyList Next)
        {
            this.key = key;
            this.Next = Next;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyList p = null, head = null; //p-вспомогательный указатель
 
            int count = 4;//количество элементов в списке
            //ввод элементов списка
            Console.WriteLine("Введите ключевые поля для " + count + " элементов списка:");
            for (int i = 1; i <= count; i++)
            {
                if (i == 1)
                {
                    head = new MyList();
                    head.key = Int32.Parse(Console.ReadLine());
                    head.Next = null;
                    p = head;
                }
                else
                {
                    p.Next = new MyList();
                    p = p.Next;
                    p.key = Int32.Parse(Console.ReadLine());
                    p.Next = null;
                }
            }
 
            MyList addElem = new MyList(0, null);//тот элемент,который мы будем добавлять
 
            for (int i = 1; i <= count; ++i) //процедура добавления элемента
            {
                if (p.key == 2) //заданная величина ключа = 2 
                {
                    if (p.Next == null)//если послед.элемент в списке имеет ключ=2
                    {
                        p.Next = addElem;
                        addElem.Next = null;
                    }
                    else
                    {
                        MyList t = p.Next;
                        p.Next = addElem;
                        addElem.Next = t;
                    }
                }
            }
        }
    }
}

Код к задаче: «вставка элемента в линейный односвязный список - C#»

textual
 MyList newnode  = new MyList();
                newnode.key = Int32.Parse(Console.ReadLine());
                p = head;
                while (p.Next != null)
                {
                    p = p.Next;
                }
                p.Next = newnode;

5   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ