Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информация и информатика.doc
Скачиваний:
2
Добавлен:
17.11.2019
Размер:
1.28 Mб
Скачать

Лінійні структури (списки даних, вектори даних)

Лінійні структури — це добре знайомі нам списки. Список — це найпростіша структура даних, що характеризується тим, що кожен елемент даних однозначно визначається своїм номером у масиві. Проставляючи номера на окремих сторінках розсипаної книги, ми створюємо структуру списку. Звичайний журнал відвідування занять, наприклад, має структуру списку, оскільки всі студенти групи зареєстровані в ньому під своїми унікальними номерами. Ми називаємо номери унікальними тому, що в одній групі не можуть бути зареєстровані два студенти з тим самим номером.

При створенні будь-якої структури даних треба вирішити два питання: як розділяти елементи даних між собою і як шукати потрібні елементи. У журналі відвідування, наприклад, це вирішується так: кожен новий елемент списку заноситься з нового рядка, тобто розділовим знаком є кінець рядка. Тоді потрібний елемент можна розшукати по номеру рядка.

N п/п Прізвище, Ім'я, По батькові

1 Лелека Олександр Олексійович

2 Бобров Борис Борисович

  1. Воробйова Валентина Владиславівна

.. ………………………………………………

27 Сорокін Сергій Семенович

Розділовим знаком може бути і який-небудь спеціальний символ. Нам добре відомі розділові знаки між словами — це пропуски. У російській і в багатьох європейських мовах загальноприйнятим розділовим знаком є крапка. У розглянутому нами класному журналі як розділовий знак можна використовувати будь-який символ, що не зустрічається в самих даних, наприклад символ «*». Тоді наш список виглядав би так:

Лелека Олександр Олексійович * Бобров Борис Борисович * Воробйова Валентина Владиславівна *...* Сорокін Сергій Семенович.

У цьому випадку для пошуку елемента з номером п треба переглянути список, починаючи із самого початку і перерахувати розділові знаки, що зустрілися. Коли буде відлічене п-1 розділових знаків, розпочнеться потрібний елемент. Він закінчиться, коли буде зустрітий наступний розділовий знак.

Ще простіше можна діяти, якщо всі елементи списку мають рівну довжину. У цьому випадку розділові знаки в списку взагалі не потрібні. Для розшуку елемента з номером п треба переглянути список із самого початку і відрахувати а(п-1) символ, де а — довжина одного елемента. З наступного символу почнеться потрібний елемент. Його довжина теж дорівнює а, тому його кінець визначити неважко. Такі спрощені списки, що складаються з елементів рівної довжини, називають векторами даних. Працювати з ними особливо зручно. Таким чином, лінійні структури даних (списки) — це упорядковані структури, у яких адреса елемента однозначно визначається його номером.

Табличні структури (таблиці даних, матриці даних)

З таблицями даних ми теж добре знайомі, досить згадати усім відому таблицю множення. Табличні структури відрізняються від лінійних тим, що елементи даних визначаються адресою комірки, що складається не з одного параметра, як у списках, а з декількох. Для таблиці множення, наприклад, адреси комірки визначаються номерами рядка і стовпця. Потрібний комірка знаходиться на їхньому перетині, а елемент зчитується з комірки.

При збереженні табличних даних кількість розділових знаків повинна бути більшою, ніж для даних, що мають структуру списку. Наприклад, коли таблиці друкують у книгах, рядки і стовпці розділяють графічними елементами — лініями вертикальної і горизонтальної розмітки (мал. 1.4).

Планета

Відстань до Сонця

Відносна маса

Кількість супутників

Меркурій

0,39

0,056

0

Венера

0,67

0,88

0

Земля

1,0

1,0

1

Марс

1,51

0,1

2

Юпітер

5,2

318

16

Якщо потрібно зберегти таблицю у виді довгого символьного рядка, використовують один розділовий знак - символ-роздільник між елементами, що належить одному рядку, і інший роздільник для відділення рядків, наприклад так:

Меркурій*0,39*0,056*0#Венера*0,67*0,88*0#Земля*1,0*1,0*1#Марс*1,51*0,1*2#…

Для пошуку елемента, що має адресу комірки (т, п), треба переглянути набір даних із самого початку і перерахувати зовнішні роздільники. Коли буде відлічений т-1 роздільник, треба перераховувати внутрішні роздільники. Після того як буде знайдений n-1 роздільник, знайдемо потрібний елемент. Він закінчиться, коли буде зустрінутий будь-який черговий роздільник.

Ще простіше можна діяти, якщо всі елементи таблиці мають рівну довжину. Такі таблиці називають матрицями. У даному випадку роздільники не потрібні, оскільки всі елементи мають рівну довжину і їх кількість відома. Для розшуку елемента з адресою (т, п) у матриці, що має М рядків і N стовпців, треба переглянути її із самого початку і відрахувати a [N(m -1) + (п -1)] символ, де а — довжина одного елемента. З наступного символу почнеться потрібний елемент. Його довжина теж дорівнює а, тому його кінець визначити неважко. Таким чином, табличні структури даних (матриці) — це упорядковані структури, у яких адреса елемента визначається номером рядка і номером стовпця, на перетині яких знаходиться комірка, що містить потрібний елемент.

Багатомірні таблиці. Вище ми розглянули приклад таблиці, що має два виміри (рядок і стовпець), але в житті нерідко приходиться мати справу з таблицями, у яких кількість вимірів більша. От приклад таблиці, за допомогою якої може бути організований облік студентів.

Номер факультету: 3

Номер курсу (на факультеті): 2

Номер спеціальності (на курсі): 2

Номер групи на потоці однієї спеціальності: 1

Номер студента в групі: 19

Розмірність такої таблиці дорівнює п'яти, і для однозначного пошуку даних про учня в подібній структурі треба знати всі п'ять параметрів (координат).