Смена значения элемента в двунаправленном списке - C#
Формулировка задачи:
У меня есть двунаправленный список вот такого вида:
Нужно создать метод который будет менять значение N-го элемента. Помогите реализовать.
class Objects
{
public string Name;
public int Birthday;
public int Month;
public Objects NextEl { get; set; }
public Objects PrevEl { get; set; }
public string getName() { return Name; }
public void setName(string Name) { this.Name = Name; }
public int getBirthday() { return Birthday; }
public void setBirthday(int Birthday) { this.Birthday = Birthday; }
public int getMonth() { return Month; }
public void setMonth(int Month) { this.Month = Month; }
}
class Line
{
public Line()
{
Objects Head = null;
Objects Tail = null;
quant = 0;
}
private Objects Head;
private Objects Tail;
private int quant=0;
public int S;
}
public void AddElementHT()
{
Objects NewEl = new Objects();
Objects NewEl1 = new Objects();
Objects NewEl2 = new Objects();
Objects NewEl3 = new Objects();
Console.WriteLine("Enter Name");
NewEl1.setName(Console.ReadLine());
Console.WriteLine("Enter Birthday");
NewEl1.setBirthday(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine("Enter Month");
NewEl1.setMonth(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine();
int k = new int();
k = 0;
while (k == 0)
{
try
{
Console.WriteLine("Adding element to head - enter '1'");
Console.WriteLine("Adding element to tail - enter '2'");
Console.WriteLine("Adding element to middle - enter '3'");
S = (Convert.ToInt32(Console.ReadLine()));
if (S < 1 || S > 3) throw new IndexOutOfRangeException();
else k = 1;
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Error!Enter value from 1 to 3");
Console.WriteLine();
}
}
if (S == 1)
{
if (Head == null)
{
Head = NewEl1;
NewEl1.NextEl = null;
NewEl1.PrevEl = null;
quant++;
}
else
{
NewEl2 = Head;
NewEl1.NextEl = NewEl2;
NewEl1.PrevEl = null;
Head = NewEl1;
NewEl2.PrevEl = NewEl1;
quant++;
}
Console.WriteLine("Successfully added to head!");
}
if (S == 2)
{
if (Head == null)
{
Head = NewEl1;
NewEl1.NextEl = null;
NewEl1.PrevEl = null;
quant++;
}
else
{
NewEl2 = Head;
while (NewEl2.NextEl != null)
NewEl2 = NewEl2.NextEl;
NewEl2.NextEl = NewEl1;
NewEl1.PrevEl = NewEl2;
NewEl1.NextEl = null;
Tail = NewEl1;
quant++;
}
Console.WriteLine("Successfully added to tail!");
}Решение задачи: «Смена значения элемента в двунаправленном списке»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DEQ_Implementation
{
public class DEQ<T>:IEnumerable<T>
{
//Внутреннее хранилище
private LinkedList<T> innerList;
//Конструктор
public DEQ()
{ innerList = new LinkedList<T>(); }
//Метод добавления в начало DEQ
public void PushFront(T arg)
{ innerList.AddFirst(arg); }
//Метод добавления в конец DEQ
public void PushBack(T arg)
{ innerList.AddLast(arg); }
//Метод извлечения с конца DEQ
public T PopBack()
{
T arg = innerList.Last<T>();
innerList.RemoveLast();
return arg;
}
//Метод извлечение с начала DEQ
public T PopFront()
{
T arg = innerList.First<T>();
innerList.RemoveFirst();
return arg;
}
//Метод очистки DEQ
public void Clear()
{ innerList.Clear(); }
//Свойство количества элементов DEQ
public int Count
{ get { return innerList.Count; } }
//Индексатор DEQ (readonly)
public T this[int index]
{
get
{
if (index >= innerList.Count)
throw new IndexOutOfRangeException("Элемент отсутствует в указанной позиции!");
else
return innerList.ElementAt(index);
}
}
//Enumerator
public IEnumerator<T> GetEnumerator()
{
return innerList.GetEnumerator();
}
//Enumerator
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return innerList.GetEnumerator();
}
}
}