Списък (абстрактен тип данни): Разлика между версии
Изтрито е съдържание Добавено е съдържание
Termininja (беседа | приноси) празни и нови редове |
Редакция без резюме |
||
Ред 1:
Списък (List<T>) е линейна структура от данни, съдържаща в себе си поредица от елементи, която в най-общия смисъл е вид [[масив (програмиране)|масив]], с тази разлика, че може да се оразмерява динамично. Списъците имат свойството капацитет, определящ текущата им дължина и брояч - броя на елементите, съдържащи се в него. С помощта на имплементираните към него [[Метод (програмиране)|методи]], можем да добавяме нови елементи на която и да е позиция в списъка, да махаме такива, да обхождаме или обръщаме тези елементи и т.н. Използва се в почти всички популярни езици за програмиране под различна абревиатура. В езика [[C Sharp|C#]] е List<T> и с <Т>, означаваме [[тип данни|типа данни]], който може да съдържа даден списък - цели и реални числа, [[низ|символни низове]] и т.н. Примери - List<int>, List<double>, List<string>.
== Какво е линейна структура от данни? ==
[[Структура от данни|
== Видове списъци ==
=== Статичен списък ===
[[Файл:Свързан списък.gif|рамка|дясно|Статичен списък - капацитет]]
[[Клас (програмиране)|Класът]] List в C# имплементира статичния списък. Той се представя в паметта като масив, елементите на който
==== Функционалност ====
Ред 68:
</syntaxhighlight>
Предимства и недостатъци: Плюсът на списъка е, че, както вече споменахме, може да се оразмерява и търсенето на елементите в него е
=== Свързан списък ===
[[Файл:Singly-linked-list.svg|рамка|вдясно|Свързан списък - всеки елемент, съдържа променлива и указател, сочещ към следващия елемент.]]
Свързаният списък е набор от елементи, за които се знае първият от тях и в този набор, всеки следващ елемент, освен вида и стойността си, пази и [[Променлива (програмиране)|променлива]](указател), която сочи към следващия елемент в колекцията. И така с всеки останал обект в свързания списък. Указателят на последния елемент има стойност null, а елементите в
==== Примерна имплементация чрез езика C# ====
Ред 121:
</syntaxhighlight>
Декларираме полетата чрез [[Конструктор (обектно-
<syntaxhighlight lang=CSharp>
public DynamicList()
Ред 132:
Имплементация на операцията Добавяне(Add).
Разглеждайки двата варианта за стойност на списъка(празен или не), добавяме нов елемент в края на редицата и по този начин декларираните полета
<syntaxhighlight lang=CSharp>
public void Add(object item)
Ред 154:
Да разгледаме и метода Изтриване(Remove).
Проверява се дали
* ако count = 0 , значи списъкът е празен (head = null).
* ако елементът е в началото на списъка - правим head да сочи към елемента веднага след изтрития (или в частност към null, ако няма такъв).
|