Динамічні структури даних

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут телекомунікацій, радіоелектроніки та електронної техніки
Факультет:
Не вказано
Кафедра:
Кафедра теоретичної радіотехніки та радіовимірювань

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт
Предмет:
Інформатика та обчислювальна техніка
Група:
РТ-11

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут телекомунікацій, радіоелектроніки та електронної техніки Кафедра теоретичної радіотехніки та радіовимірювань Звіт з лабораторної роботи №11 Тема «Динамічні структури даних» з дисципліни «Інформатика та обчислювальна техніка» Мета роботи: вивчити способи створення динамічних структур даних (списків, стеків, дерев, тощо) та виконання операцій над ними. Варіант 5 Постановка задачі. Утворити список, який містить інформацію згідно заданого варіанту. Кількість даних які вводяться визначаються в процесі вводу. Останій елемент повинен містити нулі в усіх полях. Після введення останнього елементу програма повинна вивести список на екран. Програма повинна містити функцію видалення елемента списку. 1. Згідно з індивідуальним завданням розробити необхідні структури даних. 2. Сформувати структури даних у динамічній пам’яті та проініціалізувати їх введеними з клавіатури значеннями. При відсутності в умові завдання наперед заданої кількості елементів спискових структур в якості ознаки завершення їх формування вибрати імітацію кінця файла клавіатурного введення (натискування клавіш Ctrl/Z), або ввести деяке обумовлене число чи символ. 3. Виконати над елементами списку операції перетворення (формування, включення, виключення, пошук, виведення елементів), необхідні для розв’язування задачі. Операції над списком оформити у вигляді окремих функцій. 4. Перед завершенням роботи програми звільнити виділену для списку динамічну пам’ять. Завдання Написати програму, яка вводить масив записів про студентів (Прізвище, ім’я, рік народження, група, рейтинг, стать). Програма повинна знайти і вивести на екран прізвища та ініціали студентів у яких рейтинг менший 50 балів. Короткі теоретичні відомості Список – це скінченний набір даних одного типу між якими налагоджено зв’язок. Елемент однонапрямленого списку складається з двох частин: самого даного та вказівника на наступний елемент списку. Формат опису елементу списку: struct назва_типу_списку { тип_поля1 назва_поля1; тип_поля2 назва_поля2; …………………………….. тип_поляN назва_поляN; struct назва_типу_списку *тип_вказівника ; } Наприклад, struct rika { char nazva[12]; int dov; long int pl; struct rika *dali; } В результаті опису списку отримують тільки шаблон типу даних. Для роботи зі списком потрібно оголосити необхідні вказівники. Формат оголошення вказівників: struct назва_типу_списку *ім’я_вказівника1 … * ім’я _вказівникаМ; Наприклад, struct rika *element, *pershyj, *poperednij, *novyj; 54 Вказівники *element, *pershyj, * poperednij, *novyj служать для організації роботи зі списком. Вказівник element – призначений для маркування поточного елементу списку. Тоді element- >dov - вказівник на поле dov поточного елементу списку, element->dali - вказівник на наступний елемент списку, а element->dali->dov - вказівник на поле dov наступного елементу списку. Вказівник *pershyj призначений для маркування першого елементу списку, вказівник *poperednij - для маркування попереднього елементу списку, а *novyj – для елементу списку, що створюється. На відміну від статичного масиву структур зв’язаний список є динамічним масивом структур. Створення нового елементу здійснюється наступним чином: novyj=(struct rika*)malloc(sizeof(struct rika)). Вилучення поточного елементу списку полягає в присвоїні вказівнику попереднього елементу вказівки на наступний за поточним елемент. РОЗРОБКА АЛГОРИТМУ Код програми мовою С #include <stdio.h> #include <stdlib.h> struct sp { char priz[20]; char im[20]; int rik; char gryp[20]; int rej; char st[20]; struct sp *dali; }; struct sp *el, *per, *pop, *nov; int main(int argc, char *argv[]) { int c=0,i,naj[20],kopija[20],sor; puts("Vvedit dani pro stydentiv."); puts("Dlja zakinchennja vvedit nyli."); el=(struct sp*)malloc(sizeof(struct sp)); per=el; do{ printf(" Dani pro stydenta %d:\n",++c); printf("Prizvushe:"); scanf("%s",&el->priz); printf("imja:"); scanf("%s",&el->im); printf("rik narodzennja:"); scanf("%d",&el->rik); printf("grypa:"); scanf("%s",&el->gryp); printf("rejtung:"); scanf("%d",&el->rej); printf("stat':"); scanf("%s",&el->st); el->dali=(struct sp*)malloc(sizeof(struct sp)); pop=el; el=el->dali; }while(pop->rik!=0||pop->rej!=0||pop->im[0]!=48); puts("Stvoreno Spysok:"); el=per; for(i=0;i<c;i++){ printf("%s\t%s\t%d\t%s\t%d\t%s\t\n",el->priz,el->im,el->rik,el->gryp,el->rej,el->st); el=el->dali; } el=per; printf(" stydentu sco majyt' rejtung menshuj 50 baliv:\n"); for(i=0;i<c;i++){ if(el->rej<50){ printf("%s %c.\n",el->priz,el->im[0]); } el=el->dali; } system("PAUSE"); return 0; } НАЛАГОДЖЕННЯ ТА РЕЗУЛЬТАТИ ТЕСТУВАННЯ.  Висновок: на лабораторній роботі я вивчитв способи створення динамічних структур даних (списків, стеків, дерев, тощо) та виконав операцій над ними.
Антиботан аватар за замовчуванням

09.11.2011 01:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!