Создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним - C#

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

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

Нужно создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним.Так же сделать указатели на первый и следующий элемент (List<Object>-ом пользоваться нельзя, нужно создать свой список). Помогите это написать. Элементами объекта будут Name(string), Birthday(string,int), Month(int).

Решение задачи: «Создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним»

textual
Листинг программы
  1.     public class ListForLOL
  2.     {
  3.         //Конструкторы
  4.         public ListForLOL()
  5.         {
  6.             Head = new ElementOfList();
  7.             Tail = new ElementOfList();
  8.             Tail.NextElem = Head;
  9.             Head.PrevElem = Tail;
  10.         }
  11.         public ListForLOL(ListForLOL list)
  12.         {
  13.             //здесь копируешь все элементы из list в текущий список
  14.         }
  15.  
  16.         //Элементы
  17.         ElementOfList Head;
  18.         ElementOfList Tail;
  19.  
  20.         public void AddHead(string n, string b, int m)
  21.         {
  22.             ElementOfList newEl = new ElementOfList(n, b, m);
  23.             if(Head.PrevElem.PrevElem!=null)//Если предыдущий элемент не хвост
  24.             {
  25.                 var pre = Head.PrevElem;
  26.                 //теперь элемент перед головой будет новый элемент
  27.                 Head.PrevElem = newEl;
  28.                 //Для того что был перед ним - новый элемент становится следующим
  29.                 pre.NextElem = newEl;
  30.                 //Для нового элемента
  31.                 newEl.PrevElem = pre;
  32.                 newEl.NextElem = Head;
  33.             }
  34.             else
  35.             {
  36.                 Tail.NextElem = newEl;
  37.                 Head.PrevElem = newEl;
  38.                 newEl.PrevElem = Tail;
  39.                 newEl.NextElem = Head;
  40.             }
  41.         }
  42.  
  43.         public void AddTail(string n, string b, int m)
  44.         {
  45.  
  46.         }
  47.  
  48.         public void DelHead()
  49.         {
  50.             if(Head.PrevElem.PrevElem!=null)//если предыдущий элемент не хвост
  51.             {
  52.                     ElementOfList elPrevPrev = Head.PrevElem.PrevElem;
  53.                     elPrevPrev.NextElem = Head;
  54.                     Head.PrevElem = elPrevPrev;
  55.                     //По сути просто убираем ссылки на этот элемент. Сборщик мусора, я думаю, сам о нём позаботится. Если кто против - поправьте
  56.                     //Если планируется работать с большим объёмом данных, то нужно будет вызывать сборщик самостоятельно, чтобы не хламил память
  57.                     //а для учебных целей и так сойдёт я думаю
  58.             }
  59.         }
  60.  
  61.         public void DelTail()
  62.         {
  63.  
  64.         }
  65.  
  66.         public String GetNameFromHead()
  67.         {
  68.             return Head.PrevElem.data.Name;
  69.         }
  70.  
  71.         //Тип элементов
  72.         class ElementOfList
  73.         {
  74.             public ElementOfList() { }
  75.             public Data data {get;set;}
  76.             public struct Data
  77.             {
  78.                 public string Name;
  79.                 public int Birthday;
  80.                 public int Month;
  81.             }
  82.             public ElementOfList NextElem {get;set;}
  83.             public ElementOfList PrevElem {get;set;}
  84.  
  85.             public ElementOfList(string n, string b, int m)
  86.             {
  87.                 data = new Data() {Name = n, Birthday = Int32.Parse(b),Month = m};
  88.             }
  89.             public ElementOfList(string n, int b, int m)
  90.             {
  91.                 data = new Data() { Name = n, Birthday = b, Month = m };
  92.             }
  93.  
  94.  
  95.         }
  96.  
  97.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы