Смена значения элемента в двунаправленном списке - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д