Вставка элемента в линейный односвязный список - 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;
}
}
}
}
}
}Решение задачи: «Вставка элемента в линейный односвязный список»
textual
Листинг программы
MyList newnode = new MyList();
newnode.key = Int32.Parse(Console.ReadLine());
p = head;
while (p.Next != null)
{
p = p.Next;
}
p.Next = newnode;