Смена значения элемента в двунаправленном списке - C#

Узнай цену своей работы

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

У меня есть двунаправленный список вот такого вида:
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!");
}
Нужно создать метод который будет менять значение N-го элемента. Помогите реализовать.

Решение задачи: «Смена значения элемента в двунаправленном списке»

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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5
Похожие ответы