Двозв’язні списки

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

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Програмування

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

Міністерство освіти і науки України Хмельницький національний університет Кафедра системного програмування Лабораторна робота №2 з програмування на тему: «Двозв’язні списки» Лабораторна робота №2 Тема: двозв'язні списки. Мета: навчитися програмувати з використанням вказівників та динамічних змінних, створювати та опрацьовувати двозв'язні списки. Завдання Дано «покажчик» на один з елементів непустого двозв'язного списку. Видалити зі списку даний елемент і вивести два «покажчика»: на елемент, що передує вилученому і на елемент, що іде за вилученим (один або обидва цих елементи можуть бути відсутніми; для відсутніх елементів виводити nil). Після видалення елемента зі списку звільнити пам'ять, займану цим елементом. uses crt; type vkaz=^spysok; spysok=record num:integer; next, last:vkaz end; procedure add(var a,head,tail:vkaz; D:integer); begin if a=nil then begin new(a); a^.next:=nil; a^.last:=nil; head:=a; end else begin new(a^.next); a^.next^.last:=a; a:=a^.next; a^.next:=nil; end; a^.num:=D; tail:=a; end; procedure create(var a,head,tail:vkaz; var n:integer); var i,D:integer; begin repeat write('vvedit kilkist chysel: '); readln(n) until n>0; for i:=1 to n do begin add(a,head,tail,random(50)); write(a^.num,' '); end; writeln; end; procedure Search(var a:vkaz; head:vkaz; var D:integer); var p:boolean; begin repeat write('vvedit element dlja vydalennja: '); readln(D); a:=head; while (a<>nil) and (d<>a^.num) do a:=a^.next; if a^.num=D then p:=true until p; end; procedure DelEl(var a:vkaz; head:vkaz); var temp:vkaz; D:integer; begin search(a,head,D); if (a^.last=nil) and (a^.next=nil) then begin writeln('poperednij element=NIL'); writeln('nastupnyj element=NIL'); temp:=a; a:=nil; dispose(temp); end else begin if (a^.last=nil) or (a^.next=nil) then begin if a^.last=nil then begin writeln('poperednij element=NIL'); writeln('nastupnyj element: ',seg(a^.next^),ofs(a^.next^)); temp:=a; a^.next^.last:=nil; dispose(temp); end; if a^.next=nil then begin writeln('nastupnyj element=NIL'); writeln('poperednij element: ',seg(a^.last^),ofs(a^.last^)); temp:=a; a^.last^.next:=nil; dispose(temp); end; end else begin writeln('poperednij element: ',seg(a^.last^),ofs(a^.last^)); writeln('nastupnyj element: ',seg(a^.next^),ofs(a^.next^)); temp:=a; a^.last^.next:=a^.next; a^.next^.last:=a^.last; dispose(temp); end; a:=head; while a<>nil do begin write(a^.num,' '); a:=a^.next; end; end; end; procedure free(var a,tail:vkaz); var temp:vkaz; begin if a<>nil then begin a:=tail; while a<>nil do begin temp:=a; a:=a^.last; dispose(temp); end; end else dispose(a); end; var el,head,tail:vkaz; n,d:integer; begin clrscr; randomize; create(el,head,tail,n); DelEl(el,head); free(el,tail); repeat until keypressed; end. Результати виконаної програми: / / / Висновок. Виконавши лабораторну роботу, я закріпив навички роботи з вказівниками, динамічними змінними та динамічними структурами даних; засвоїв алгоритми створення двозв’язного списку з різною кількістю елементів та додавання, пошуку і видалення елементів цього списку.
Антиботан аватар за замовчуванням

28.03.2013 22:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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