Создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним - C#
Формулировка задачи:
Нужно создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним.Так же сделать указатели на первый и следующий элемент (List<Object>-ом пользоваться нельзя, нужно создать свой список). Помогите это написать. Элементами объекта будут Name(string), Birthday(string,int), Month(int).
Решение задачи: «Создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним»
textual
Листинг программы
public class ListForLOL { //Конструкторы public ListForLOL() { Head = new ElementOfList(); Tail = new ElementOfList(); Tail.NextElem = Head; Head.PrevElem = Tail; } public ListForLOL(ListForLOL list) { //здесь копируешь все элементы из list в текущий список } //Элементы ElementOfList Head; ElementOfList Tail; public void AddHead(string n, string b, int m) { ElementOfList newEl = new ElementOfList(n, b, m); if(Head.PrevElem.PrevElem!=null)//Если предыдущий элемент не хвост { var pre = Head.PrevElem; //теперь элемент перед головой будет новый элемент Head.PrevElem = newEl; //Для того что был перед ним - новый элемент становится следующим pre.NextElem = newEl; //Для нового элемента newEl.PrevElem = pre; newEl.NextElem = Head; } else { Tail.NextElem = newEl; Head.PrevElem = newEl; newEl.PrevElem = Tail; newEl.NextElem = Head; } } public void AddTail(string n, string b, int m) { } public void DelHead() { if(Head.PrevElem.PrevElem!=null)//если предыдущий элемент не хвост { ElementOfList elPrevPrev = Head.PrevElem.PrevElem; elPrevPrev.NextElem = Head; Head.PrevElem = elPrevPrev; //По сути просто убираем ссылки на этот элемент. Сборщик мусора, я думаю, сам о нём позаботится. Если кто против - поправьте //Если планируется работать с большим объёмом данных, то нужно будет вызывать сборщик самостоятельно, чтобы не хламил память //а для учебных целей и так сойдёт я думаю } } public void DelTail() { } public String GetNameFromHead() { return Head.PrevElem.data.Name; } //Тип элементов class ElementOfList { public ElementOfList() { } public Data data {get;set;} public struct Data { public string Name; public int Birthday; public int Month; } public ElementOfList NextElem {get;set;} public ElementOfList PrevElem {get;set;} public ElementOfList(string n, string b, int m) { data = new Data() {Name = n, Birthday = Int32.Parse(b),Month = m}; } public ElementOfList(string n, int b, int m) { data = new Data() { Name = n, Birthday = b, Month = m }; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д