Структури даних
Поняття й типи списків. Орієнтовні графи, властивості дерев. Розташування ключів у двійковому дереві, їх властивість впорядкованості. Знаходження мінімального (максимального) ключа в дереві, процедура FindMin. Вставка і видалення вершини в бінарне дерево.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | украинский |
Дата добавления | 07.09.2011 |
Размер файла | 151,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Структури даних
Означення. Опис складних об'єктів засобами більш простих типів даних, які безпосередньо представляються у машині, називається структурами даних.
Найпоширеними складними об'єктами є множини та послідовності (впорядковані множини).
Списком називається впорядкована послідовність елементів a1, a2, ..., an. Розмір або довжина цього списку дорівнює n. Список розміру 0 називається порожнім. Список можна реалізувати або за допомогою масиву або за допомогою зв'язування його елементів вказівниками (зв'язаний список). У зв'язаному списку елементи лінійно впорядковані, їх порядок визначається вказівниками, що входять у склад елементів списка. Елемент двостороннього зв'язаного списка містить три поля: ключ та два вказівника - наступний та попередній. В односторонньому зв'язаному списку відсутнє поле `попередній'. У впорядкованому списку елементи розташовані в порядку зростання ключів на відміну від невпорядкованого списка.
Стеки та черги - це динамічні множини (або спеціальні типи списків), в яких елемент що додається, визначається структурою множини. Стек працює за принципом “останній прийшов - перший пішов (LIFO)”, а черга - за принципом “перший прийшов - перший пішов (FIFO)”.
Нехай PList - вказівник на однозв'язний список.
PList = ^List;
List = object
val: integer; /* значення */
next: PList; /* вказівник на наступний елемент списку */
end;
Стек має наступні методи:
PUSH - покласти елемент до стеку;
POP - взяти верхній елемент зі стеку;
TOP - повернути верхній елемент стеку без його вилучення;
IsEmpty - перевірити, чи є стек порожнім;
PRINT - надрукувати елементи стеку.
Pstack - вказівник на об'єкт стек.
PStack = ^Stack;
Stack = object
lst: PList;
procedure Push (Value: integer);
function Pop :integer;
function Top :integer;
function IsEmpty :boolean;
procedure Print;
end;
procedure Stack.Push (Value:integer);
var temp: PList;
begin
New (temp);
temp^.val := Value;
temp^.next := lst;
lst := temp;
end;
function Stack.Pop: integer;
begin
if (lst = NIL) then Pop := -1 else
begin
Pop := lst^.val;
lst := lst^.next;
end;
end;
function Stack.Top: integer;
begin
Top := lst^.val;
end;
function Stack.IsEmpty: boolean;
begin
if (lst = NIL) then IsEmpty := TRUE
else IsEmpty := FALSE;
end;
procedure Stack.Print;
var tmp: PList;
begin
tmp := lst;
while (tmp <> NIL) do
begin
write(tmp^.val); write(' ');
tmp := tmp^.next;
end;
writeln;
end;
Орієнтованим графом називається структура G = (V, E), де V - скінченна множина вершин, E - множина ребер, що задається як бінарне відношення на V. Орієнтований граф називається орграфом. Граф може містити ребра - цикли, які сполучають вершину саму з собою. Про ребро (u, v) говорять, що воно виходить із вершини u та входить у вершину v.
Размещено на http://www.allbest.ru/
В неорієнтованому графі множина ребер E складається із невпорядкованих пар вершин. Про ребро (u, v) неорієнтованого графу говорять, що воно інцидентно вершинам u та v. Якщо в графі G є ребро (u, v), то говорять, що вершина u суміжна з вершиною v. Для неорієнтованого графу відношення суміжності є симетричним.
Степенем вершини в неорієнтованому графі називається кількість інцидентних їй ребер. Для орієнтовних графів розрізняють вхідну та вихідну вершини; сума вхідних та вихідних степеней називається степенем вершини.
Деревом називається зв'язаний граф без циклів. Дерево являє собою скінченну множину елементів Т, які називаються вершинами. Якщо множина вершин Т порожня, то дерево називається порожнім; інакше в дереві повинна бути виділена одна вершина, яка називається коренем (якщо виділеної вершини не існує, то така структура називається деревом без виділеного кореня). Якщо (y, x) є останнім ребром на шляху з кореня до х, то y називається батьком, а x - сином. Корінь є єдиною вершиною, яка не має батька. Вершини, які мають одного спільного батька, називаються братами. Якщо кожна вершина T (батько) сполучається не більше ніж з k іншими вершинами T1, T2, ..., Tk (синами), то таке дерево називається k - арним. Якщо вершина не має синів, то вона називається листом; інакше вершина називається внутрішньою. Кількість синів у вершини дерева називається її степенем. Глибиною вершини називається довжина шляху від кореня до цієї вершини. Висотою дерева називається найбільша довжина від кореня до листа. Повним k - арним деревом називається k - арне дерево, в якому усі листи мають однакову глибину та усі внутрішні вершини мають однаковий степінь.
Властивість дерев. Нехай G = (V, E) - неорієнтований граф. Тоді наступні твердження еквівалентні:
G є деревом без виділеного кореня;
для довільних двох вершин G існує єдиний простий шлях, що їх сполучає;
граф G є зв'язним, але не залишається таким при вилученні хоча б одного ребра;
граф G є зв'язним і |E| = |V| - 1;
граф G є ациклічним і |E| = |V| - 1;
граф G є ациклічним, але додання довільного ребра породжує цикл.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
У двійковому дереві кожна вершина може мати не більше двох синів (лівий та правий сини). Кожна вершина окрім кореня, має батька. При представленні двійкового дерева за допомогою вказівників кожна вершина містить ключ Val, вказівники на лівого Left та правого Right синів, а також на батька Up. Якщо сина або батька (для кореня) не існує, то відповідний вказівник містить NIL.
Ключі у двійковому дереві містяться у відповідності до властивості впорядкованості:
Нехай x - довільна вершина двійкового дерева. Якщо вершина y знаходиться в лівому піддереві вершини x, то x.Val > y.Val. Якщо вершина y знаходиться в правому піддереві вершини x, то x.Val < y.Val.
Нехай PTree - вказівник на структуру типу бінарне дерево.
PTree = ^Tree;
Tree = object
Val: integer; /* значення вершини */
Left: PTree; /* вказівник на лівого сина */
Right: PTree; /* вказівние на правого сина */
Up: PTree; /* вказівник на батька */
end;
Об'єкт дерево має наступні методи:
INSERT - вставка елемента до дерева;
DELETE - вилучення елемента з дерева;
FIND - пошук елемента в дереві;
FindMin - пошук вузла дерева з мінімальним елементом;
FindMax - пошук вузла дерева з максимальним елементом;
PrintLR - обхід дерева зліва направо.
PTreeStr = ^TreeStr;
TreeStr = object
TTree: PTree;
procedure Insert (Value:integer);
procedure Delete (Value:integer);
function Find (Value:integer): boolean;
function FindMin: PTree;
function FindMax: PTree;
procedure PrintLR;
end;
Властивість впорядкованості дозволяє надрукувати всі ключі у неспадному порядку за допомогою обходу дерева зліва направо, який відбувається наступним чином:
побувати в лівому піддереві
побувати в корені
побувати в правому піддереві
procedure PLR (Tree: PTree);
begin
if (Tree = NIL) then Exit;
PLR (Tree^.left);
write (Tree^.Val, ' ');
PLR (Tree^.right);
end;
procedure TreeStr.PrintLR;
begin
PLR (TTree);
writeln;
end;
function FindEl (var Tree: PTree; Value:integer):boolean;
begin
if (Tree = NIL) then FindEl := FALSE else
if (Tree^.Val = Value) then FindEl := TRUE else
if (Value < Tree^.Val) then FindEl := FindEl (Tree^.Left, Value)
else FindEl := FindEl (Tree^.Right, Value);
end;
function TreeStr.Find (Value:integer):boolean;
begin
Find := FindEl (TTree, Value);
end;
Размещено на http://www.allbest.ru/
Мінімальний (максимальний) ключ в дереві можна знайти, якщо пройти по вказівникам Left (Right) від кореня поки не досягнемо вершини, лівий (правий) син якої дорівнює NIL. Процедура FindMin (FindMax) повертає вказівник на вершину, яка містить мінімальний (максимальний) ключ. Час виконання вказаних процедур дорівнює O(h), де h - висота дерева.
function FMax (Tree:PTree):PTree;
begin
if (Tree^.Right = NIL) then FMax := Tree
else FMax:= FMax (Tree^.Right);
end;
function TreeStr.FindMax:PTree;
begin
if TTree = NIL then FindMax := NIL
else FindMax := FMax (TTree);
end;
function Fmin (Tree:PTree):PTree;
begin
if (Tree^.Left = NIL) then FMin := Tree
else FMin:= FMin (Tree^.Left);
end;
function TreeStr.FindMin:PTree;
begin
if TTree = NIL then FindMin := NIL
else FindMin := FMin (TTree);
end;
Размещено на http://www.allbest.ru/
У процедурі вставки Insert елемента Value в бінарне дерево Tree відбувається рух вниз по дереву від корня до листа. В кожній вершині x, яка не є листом, процедура обирає напрямок руху (вліво чи вправо) у відповідності до властивості впорядкованості: якщо Value < x.Val, то відбувається рух вліво, інакше - вправо. Дійшовши до листа z, процедура вставляє нову вершину w, ключ якої дорівнює Value знову ж таки за властивістю впорядкованості: якщо Value < z.Val, то z.Left := w, інакше z.Right := w. Час виконання процедури дорівнює O(h), де h - висота дерева.
Размещено на http://www.allbest.ru/
procedure InsElem (var Tree: Ptree; Value: integer);
begin
if (Tree = NIL) then
begin
New (Tree);
Tree^.val := Value;
Tree^.Left := nil;
Tree^.Right := nil;
Exit;
end;
if (Value > Tree^.Val) then
if Tree^.Right = NIL then
begin
New (Tree^.Right);
Tree^.Right^.val := Value;
Tree^.Right^.Left := NIL;
Tree^.Right^.Right := NIL;
Tree^.Right^.Up := Tree;
end
else InsElem (Tree^.Right, Value)
else
if Tree^.Left = NIL then
begin
New (Tree^.Left);
Tree^.Left^.val := Value;
Tree^.Left^.Left := NIL;
Tree^.Left^.Right := NIL;
Tree^.Left^.Up := Tree;
end
else InsElem (Tree^.Left, Value);
end;
procedure TreeStr.Insert (Value:integer);
var Tmp: PTree;
begin
InsElem (TTree, Value);
end;
При видаленні вершини х з бінарного дерева можливі три випадки:
х не має синів - тоді достатньо розташувати NIL у відповідне поле його батька (замість х);
х має одного сина - тоді його можна вирізати, поєднавши його батька напряму з цим сином;
х має двох синів - необхідно знайти наступний за х елемент y (який вже не має лівого сина), скопіювати його ключ та певні дані з вершини y до вершини x, а саму вершину y видалити вище описаним способом.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
procedure DelElem (var Tree: PTree; Value: integer);
var tmp, Repl: PTree;
begin
if (Tree = NIL) then Exit;
if (Value < Tree^.Val) then DelElem (Tree^.Left, Value)
else if (Value > Tree^.Val) then DelElem (Tree^.Right, Value)
else if ((Tree^.Left <> NIL) and (Tree^.Right <> NIL)) then
begin
Repl := Fmin (Tree^.Right);
Tree^.Val := Repl^.Val;
DelElem (Tree^.Right, Repl^.Val);
end
else
begin
tmp := Tree;
if (Tree^.Left = NIL) then repl := Tree^.Right;
if (Tree^.Right = NIL) then repl := Tree^.Left;
Dispose (tmp);
Tree := Repl;
end;
end;
procedure TreeStr.Delete (Value:integer);
begin
DelElem (TTree, Value);
end;
Дерева з довільним розгалудженням можна перетворити у двійкове дерево за принципом “ліва дитина - правий сусід”. Кожна вершина містить три вказівники:
вказівник p на батька;
вказівник left-child[x] на саму ліву дитину вершини х;
вказівник right-child[x] на найближчого сусіда вершини х;
Вершина х не має дітей тоді і тільки тоді коли left-child[x] = NIL. Вершина х є крайньою правою дитиною свого батька якщо right-child[x] = NIL.
Размещено на http://www.allbest.ru/
AVL - деревом (Adelson-Velskii and Landis) називається бінарне дерево, яке має наступні властивості:
висоти піддерев кожного батька відрізняються не більше ніж на 1:
кожне піддерево батька є AVL - деревом.
AVL - дерева належать до класу збалансованих бінарних дерев.
Ліве дерево є AVL - деревом, оскільки у нього висота кожного лівого сина на 1 більша за висоту відповідного правого сина. Дерево, яке зображене справа, не є AVL - деревом, оскільки лівий син вершини 12 (дерево з коренем 8) має висоту 4, а правий син вершини 12 (дерево з коренем 18) має висоту 2.
Дерево відрізків - це структура даних, яка створена для роботи з такими інтервалами на числовій осі, кінці яких належать фіксованій множині з N абсцис (далі цими абсцисами будемо вважати цілі числа в інтервалі [1, N]). Оскільки множина абсцис фіксована, то дерево відрізків являє собою статичну структуру по відношенню до цих абсцис.
Дерево відрізків - це двійкове дерево з коренем. Для заданих цілих чисел l та r (l < r) дерево відрізків T(l, r) будується рекурсивно наступним чином: воно складається з кореня v з параметрами B[v] = l, E[v] = r (B - Begin, E - End). Якщо r - l > 1, то воно складається з лівого піддерева T(l, [(B[v] + E[v])/2]) та правого піддерева T([(B[v] + E[v])/2], r).
Інтервали, що належать множині {[B[v], E[v]]: v - вузел T(l, r)}, називаються стандартними інтервалами дерева T(l, r). Стандартні інтервали, які належать листам T(l, r), називаються елементарними інтервалами. T(l, r) збалансоване та має глибину ?log2(r - l)?.
Дерево відрізків призначено для динамічного запам'ятання інтервалів, кінці яких належать множині {l, l + 1, ..., r}. Якщо r - l > 3, то інтервал [b, e] з цілими b < e буде розбито в набір не більш ніж ?log2 (r - l)? + ?log2 (r - l)? - 2 стандартних інтервалів дерева T(l, r).
Размещено на http://www.allbest.ru/
Функція BuildTree ( l, r ) будує та повертає дерево відрізків T(l, r). Складний тип даних tree має структуру дерева, в якій left та right - вказівники на лівого та правого сина, begin та end - параметри вершини.
орієнтований граф дерево ключ дані
BuildTree ( l, r )
temp ? new tree;
begin [temp] ? l;
end [temp] ? r;
if (r - l < 2) then
begin
left[temp] ? NIL;
right[temp] ? NIL;
return temp;
end;
left[temp] ? BuildTree ( l, [(l + r) / 2] );
right[temp] ? BuildTree ( [(l + r) / 2], r );
return temp;
Фрагментація інтервала [b, e] повністю визначається операцією занесення [b, e] в дерево відрізків Т. До структури даних tree додамо булевий параметр flag, який буде відповідати за включення стандартного інтервалу до інтервалу [b, e]. Тобто якщо для деякої вершини v має місце flag[v] = TRUE, то [ begin[v], end[v] ] ? [b, e].
InsertTree ( b, e, T )
if (b ?begin[T] and end[T] ?e) then flag[T] = TRUE;
else
begin
if (b <??begin[T] + end[T] ) / 2 ) then InsertTree ( b, e, left[T] )
if (??begin[T] + end[T] ) / 2 < e) then InsertTree ( b, e, right[T] )
end;
Наприклад, після занесення інтервала [5, 14] до дерева відрізків T(4,15) параметр flag у наступних стандартних інтервалах буде встановлено в істину:
[5, 6], [6, 9], [9, 12], [12, 13], [13, 14].
2-3 деревом називається дерево, в якому кожний вузол, який не є листом, має двох або трьох синів, а довжини всіх шляхів з кореня до листів однакові.
Позначимо через E[l] елемент даних, приписаний вершині l. Кожна вершина v, яка не є листом, містить два додаткові елементи: L[v] та M[v] найбільший елемент множини даних S у піддереві, коренем якого є відповідно лівий та середній син вершини v.
Размещено на http://www.allbest.ru/
Вставка в 2 - 3 дерево. Для вставки нового елемента а необхідно знайти місце для нового листа l. Для цього шукають елемент а в дереві. Пошук закінчується у вузлі f, який має двох чи трьох синів що є листами.
Якщо з вузла f виходить лише два вузла l1 та l2, то l стає сином f. Якщо a < E[l1], то l стає самим лівим сином вузла f і покладаємо L[f] = a, M[f] = E[l1]. Якщо E[l1] < a < E[l2], то l стає середнім сином вузла f і покладаємо M[f] = a. Якщо E[l2] < a, то l стає третім сином вузла f. В останньому випадку може виникнути необхідність змінити значення L та M на деяких предках вузла f.
Нехай вузел вже має три листа l1, l2 та l3. L робимо відповідним сином вузла f, після чого f має чотирьох синів. Для збереження 2 - 3 властивості утворимо новий вузел g. Два лівих сина залишаємо синами вузла f, а два правих робимо синами g. Потім робимо g братом f, зробивши його сином батька f. Якщо батько вузла мав двох синів, то зупиняємося. Якщо трьох, то рекурсивно повторюємо вказану процедуру до тих пір, поки в дереві не залишиться більше трьох синів. Якщо корінь матиме чотири сина, утворимо новий корінь з двома новими синами, кожний з яких буде мати в якості двох своїх синів двох із чотирьох синів старого кореня.
Формула Ейлера. Позначимо через V, E, F кількість вершин, ребер та граней планарного графу G (включаючи необмежену область). Тоді справедлива формула:
V - E + F = 2
Размещено на http://www.allbest.ru/
Малюнок Х. Граф. V = 4, E = 6, F = 4: V - E + F = 4 - 6 + 4 = 2
Якщо граф G незв'язний, а С - кількість компонент зв'язності, то має місце формула:
V - E + F - C = 1
Теорема. Планарний граф з V вершинами має не більше 3(V - 2) ребер та не більше 2(V - 2) граней.
Доведення. Припустимо, що граф не має подвійних ребер та циклів. Побудуємо триангуояцію графу.
Реберний список з подвійними зв'язками (РСПЗ) використовується для представлення планарного графа. Плоске укладання планарного графа - це відображення кожної вершини у точку на площині, а кожного ребра - в просту лінію, яка сполучає пару образів кінцевих вершин цього ребра так, щоб образи ребер перетиналися лише у своїх кінцевих точках.
Головною компонентою РСПЗ для планарного графа (V, E) є реберний вузел. Між ребрами та реберними вузлами існує взаємно однозначна відповідність. Реберний вузел містить чотири інформаційні поля (V1, V2, F1, F2) та два поля вказівників (P1, P2). Поле V1 містить початок ребра, а поле V2 містить його кінець (ребро таким чином має орієнтацію). Поля F1 та F2 містять імена граней. Вказівник P1 (відповідно P2) задає реберний вузел, який містить перше ребро, що зустрічається за ребром (V1, V2) при повороті від нього проти годинникової стрілки навколо V1 (відповідно V2). Імена граней та вершин задаються цілими числами.
Размещено на http://www.allbest.ru/
V1 |
V2 |
F1 |
F2 |
P1 |
P2 |
||
a1 |
1 |
2 |
5 |
1 |
5 |
3 |
|
a2 |
2 |
3 |
5 |
4 |
1 |
10 |
|
a3 |
2 |
4 |
4 |
1 |
2 |
8 |
|
a4 |
1 |
5 |
1 |
3 |
1 |
7 |
|
a5 |
1 |
6 |
3 |
5 |
4 |
6 |
|
a6 |
6 |
7 |
3 |
5 |
5 |
10 |
|
a7 |
5 |
7 |
2 |
3 |
8 |
6 |
|
a8 |
5 |
4 |
1 |
2 |
4 |
9 |
|
a9 |
4 |
7 |
4 |
2 |
3 |
7 |
|
a10 |
3 |
7 |
5 |
4 |
2 |
9 |
Якщо граф має N вершин та F граней, то введемо два масива HV[1:N] та HF[1:F], які містять номер ребра, що виходить з відповідної вершини (обмежує грань). Процедура Fill заповнює ці масиви переглядаючи V1 та F1 за час O(N).
Fill
for i ?1 to N do
begin
if (HV[V1[i]] = 0) then HV[V1[i]] i;
if (HV[V2[i]] = 0) then HV[V2[i]] i;
if (HF[F1[i]] = 0) then HF[F1[i]] i;
if (HF[F2[i]] = 0) then HF[F2[i]] i;
end;
Після виконання процедури Fill для наведеного прикладу масиви HV та HF приймуть наступні значення:
HV = [1,1,2,3,4,5,6];
HF = [1,7,4,2,1].
Процедура vertex ( i ) будує послідовність ребер, інцидентних vi як послідовність адрес, занесених в масив An.
Vertex ( j )
i 1;
a HV[j];
a0 a;
An[i] a;
i i + 1;
if (V1[a] = j) then a P1[a]
else a P2[a];
while (a a0) do
begin
An[i] a; i i + 1;
if (V1[a] = j) then a P1[a]
else a P2[a];
end;
Час роботи процедури Vertex ( j ) пропоційна числу ребер, інцидентних vj. Аналогічно можна створити процедуру Facet ( j ), за допомогою якої можна отримати послідовність ребер, які обмежують грань fj, замінивши в попередній процедурі HV та V1 на HF та F1.
Процедури Vertex ( j ) перелічує ребра в порядку обхода навколо вершини проти годинникової стрілки, а Facet ( j ) перелічує їх в порядку обхода за годинниковою стрілкою навколо грані.
Хеш таблиці. Нехай дано n елементів, ключами яких є цілі числа в межах від 1 до m, m ??n. У найпростішому випадку задані n елементів можна зберігати у таблиці T[m] з прямою адресацією: T[i] або порожнє, або містить один елемент. Пошук в такій таблиці відбувається за час O(1). При такому зберіганні даних повинні виконуватись дві умови:
всі ключі повинні бути унікальними;
значення ключів повинні знаходитися у певних межах.
Якщо ключі не унікальні, то можна утворити m списків, кожен з який містить елементи з однаковими ключами. Час пошуку елемента із заданим ключем залишається рівним O(1). Але якщо елементи з одного списку мають різні характеристики (незважаючи на спільний ключ), і кількість елементів у списку дорівнює d, то час пошуку такого елемента складатиме O(d).
Система неперитинаючих множин - це набір непорожніх множин, які не перетинаються, в кожній з яких зафіксовано один із елементів (представник). На системі неперетинаючих множин підтримуються наступні операції:
Make-Set (x). Утворення множини. Процедурі передається вказівник на вже існуючий об'єкт х. Процедура утворює нову множину, єдиний елемент якої задається вказівником х. Оскільки множини не повинні перетинатися, елемент х повинен вказувати на новий об'єкт (який не лежить в жодній із існуючих множин).
Find-Set (x). Знайти множину. Повертає вказівник на представника (єдиного) множини, який містить елемент, на який вказує х.
Union (x, y). Об'єднання. Процедура застосовується, якщо елементи x та y містяться у різних множинах Sx та Sy і замінює ці множини на об'єднання Sx ? Sy; при цьому обирається деякий представник для Sx ? Sy. Самі множини Sx та Sy при цьому знищуються.
Реалізація системи непертинаючих множин за допомогою списків. Кожна множина зберігається у вигляді списку. Представником множини вважається перший елемент списку, а кожний елемент містить вказівники на наступний та перший елементи. Для кожного списку зберігаються вказівники на перший та останній (він потрібний для додавання елементів в кінець списку) елементи.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
При такій реалізації операції Make-Set утворює список із одного елемента, а Find-Set повертає вказівник на початок списку і обидві вимагають часу O(1). Для виконання операції Union (x, y) необхідно додати список, який містить x, до кінця списку, що містить y. При цьому треба також встановити правильні вказівники на початок списку для усіх бувших елементів множини, що містила х; час вказаної операції лінійно залежить від розміру вказаної множини.
Размещено на Allbest.ru
Подобные документы
Структури даних як способи їх організації в комп'ютерах. Підтримка базових структури даних в програмуванні. Дерево як одна з найпоширеніших структур даних. Бінарні дерева на базі масиву. Створення списку - набору елементів, розташованих у певному порядку.
контрольная работа [614,7 K], добавлен 18.02.2011Процеси пошуку інформацій та розробка структури даних для ефективного зберігання та обробки інформації. Як приклад розглянуто бінарне дерево. Бінарні структури широко використовуються у житті,широко використовуються в багатьох комп'ютерних завданнях.
курсовая работа [67,7 K], добавлен 24.06.2008Основні операції над стеком. Бінарне дерево пошуку. Абстрактний тип даних "Черга". Динаміка вмісту списку при внесенні до нього елемента. Написання програми синтаксичного аналізу відповідностей відкриваючих і закриваючих дужок в арифметичному виразі.
курсовая работа [2,9 M], добавлен 14.05.2015Автозаповнення. Прогресії. Виділення об’єктів. Видалення комірок, рядків та стовпців. Вставка комірок, рядків та стовпців. Переміщення та копіювання даних на листі. Перенесення даних із однієї робочої книги в іншу. Відміна дій. Арифметичні й інші типи опе
дипломная работа [58,2 K], добавлен 28.03.2004Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.
лекция [411,2 K], добавлен 24.07.2014Електронна база даних як послідовність даних заданої структури, записана на магнітний диск комп'ютера, її типи, основні та невід'ємні властивості. Призначення та оцінка можливостей системи управління. Моделі даних та головні принципи їх функціонування.
презентация [352,2 K], добавлен 04.12.2014Процес проектування даних, логічне моделювання і фізичне проектування. Діаграма "сутність-зв'язок" (Entity-Relationship). DDL-скрипт для створення бази даних. Логічна модель та опис, типи ключів. Фізична модель та спосіб розміщення даних на носіях.
контрольная работа [490,4 K], добавлен 25.04.2013Загальне значення графу. Алгоритми обходу графів. Матриця суміжності і список суміжності. Граф як структура даних. Використання двовимірного масиву чисел. Додавання нового зв'язку між заданою парою існуючих вершин, нової вершини разом з зв'язками.
отчет по практике [132,7 K], добавлен 29.06.2012Види списків, особливості їх створення, застосування та можливості удосконалення роботи користувача персонального комп’ютера. Керування та аналіз груп споріднених даних у середовищі програми MS Excel 2010. Опрацювання спискiв за допомогою форми даних.
дипломная работа [2,7 M], добавлен 18.06.2014Вивчення сутності поняття про інформацію в сучасному світі, її основні властивості. Діалектична єдність даних і методів. Характеристика та поняття інформаційної структури і державних систем в Росії, формування єдиного інформаційно-правового простору.
реферат [21,0 K], добавлен 21.04.2009