ЗАДАНИЕ №2. Написать программу, которая использует добавление, поиск, удаление и вывод узлов динамического списка
Написать программу, которая использует добавление, поиск, удаление и вывод узлов динамического списка. Program dinlist1; type s_name=string[20]; p_student=^student; student=record name: s_name; next: p_student; end; var head: p_student; {начало списка} buf: s_name; {буфер для ввода с клавиатуры} {добавления в начало списка} procedure AddToList (var head: p_student; name: s_name); var curr: p_student; begin new (curr); curr^.name: =name; curr^.next: =head; head: =curr; end; {вывод списка} procedure PrintList (p: p_student); var curr: p_student; begin curr: =p; while curr< > nil do begin writeln (curr^. name); curr: =curr^. next; end; end; {удаление узла из списка} function DelNode (var head: p_student; name: s_name): Boolean; var curr: p_student; p: p_student; done: Boolean; begin p: =nil; curr: =head; done: =FALSE; while (done=FALSE) and (curr< > nil) do begin if curr^. name=name then begin if p=nil then head: =curr^. next else p^.next: =curr^. next; done: =TRUE; end else begin p: =curr; curr: =curr^. next; end; end; DelNode: =done; end; {основная программа} begin repeat write (‘Фамилия-> ’); readln (buf); if length (buf)< > 0 then AddToList (head, buf); until length (buf)=0; writeln (‘** Введенный список **’); PrintList (head); writeln (‘** Удаление из списка **’); repeat write (‘Фамилия-> ’); readln (buf); if length (buf)< > 0 then if DelNode (head, buf) then writeln (‘Элемент” ‘, buf, ‘ “удален из списка’) else writeln (‘Элемента” ‘, buf, ‘”в списке нет’); until length (buf)=0; writeln (‘** Список после удаления узлов **’); PrintList (head); end. Вот пример работы программы: Фамилия-> Иванов Фамилия-> Петров Фамилия-> Васильев Фамилия-> Андреев Фамилия-> ** Введенный список ** Андреев Васильев Петров Иванов ** Удаление из списка ** Фамилия-> Андреев Элемент “Андреев” удален из списка Фамилия-> Петров Элемент “Петров” удален из списка Фамилия-> Сидоров Элемента “Сидорова” в списке нет Фамилия-> ** Список после удаления узлов ** Васильев Иванов Задание для самостоятельного решения. Написать программу, которая формирует упорядоченный список студентов по убыванию. Порядок следования записей в списке определяется содержимым поля name. Лабораторная работа №16. Тема: «Разработка алгоритмов и программ с использованием динамических структур данных». Цель работы: составление на языке Pascal программ с использованием динамических структур данных. Программные средства: система программирования Borland Pascal.
|