25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Глава 16. Линейни структури от данни 661<br />

Това показва, че можем да реализираме една и съща абстрактна структура<br />

от данни по фундаментално различни начини, но в крайна сметка<br />

ползвателите на структурата няма да забележат разлика в резултатите при<br />

използването й. Разлика обаче има и тя е в скоростта на работа и в обема<br />

на заеманата памет.<br />

Двойно свързани списъци<br />

Съществува и т. нар. двойно свързан списък (двусвързан списък), при<br />

който всеки елемент съдържа стойността си и два указателя – към<br />

предходен и към следващ елемент (или null, ако няма такъв). Това ни<br />

позволява да обхождаме списъка, както напред така и назад. Това<br />

позволява някои операции да бъдат реализирани по-ефективно. Ето как<br />

изглежда един примерен двусвързан списък в паметта:<br />

42 3 71 8<br />

Head<br />

Next Next Next Next<br />

null<br />

null<br />

Prev<br />

Prev<br />

Prev<br />

Prev<br />

Tail<br />

Класът ArrayList<br />

След като се запознахме с някои от основните реализации на списъците,<br />

ще се спрем на класовете в C#, които ни предоставят списъчни структури<br />

"на готово". Първият от тях е класът ArrayList, който представлява<br />

динамично-разширяем масив. Той е реализиран по сходен начин със<br />

статичната реализация на списък, която разгледахме по-горе. ArrayList<br />

дава възможност да добавяме, премахваме и търсим елементи в него. Някои<br />

по-важни членове, които можем да използваме са:<br />

- Add(object) – добавяне на нов елемент<br />

- Insert(int, object) – добавяне на елемент на определено място<br />

(индекс)<br />

- Count – връща броя на елементите в списъка<br />

- Remove(object) – премахване на определен елемент<br />

- RemoveAt(int) – премахване на елемента на определено място<br />

(индекс)<br />

- Clear() – изтрива елементите на списъка

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!