Double Linked List

Днес мисля да постна малко чист C# код, а именно имплементация на структурата от данни двойно-свързан списък.

Node<T> класът

Да започнем с Node<T> класът или иначе казано какви обекти ще има нашият DoubleLinkedList.

Node class

Полетата next и prev ни трябват, за да пазим връзката между следващия и предходния елемент от свързания списък – нали е двойно свързан, би трябвало да можем да го обхождаме и наобратно 😉

public class DoubleLinkedList<T>

Единствените полета, които са ни нужни в класа + пропъртито Size, което ни връща големината на нашата структура, конструктурът не представлява нищо особено:

DoubleLinkedList class

Сега нека пристъпим към по-интересната част…

Прибавяне на елемент в началото и в края на списъка

В началото на списъка:

В края на списъка:

Индексиране

Естествено, бихме искали да можем да достъпваме нашите елементи в списъка по индекс – нещо, което не е възможно при обикновения свързан списък. Ето как изглежда и кода:

Използваме и два метода, които сме си написали, които сме изнесли в такива, за да си спестим по-нататъчно писане на един и същ код, което не спазва конвенциите за Качествен програмен код. Ето ги и тях:

и остана да реализираме вмъкване на елемент на определена позиция:

InsertAt метод

Actually…where is the code?!

Тъй като приложих самия код на картинки, а никъде не описах някакъв тестов клас, който да провери действието на нашата структура, ето и линкове към кода на DoubleLinkedList класа и тестовия клас.