|
|
zadach332.PAS |
|
{* Задача 332 *}Unit ZADACH332;Interface Implementation Begin writeln('Имеются линейные однонаправленные списки: type p=^item; item=record data:real; reference:p end; Написать программу удаления из списка L одного элемента, следующего за элементом E, если такой есть и он отличен от E. '); End. Program spisok; Uses zadach332.pas; {* Эту строку можно удалить *} Uses crt; {* Подключение модулей *} Type {* Типы переменных *} p = ^item; {определение указателя на объект} item = Record {определение для объекта} data : real; reference : p End; Var {* Объявление переменных *} sp : p; sp1 : p; sp2 : p; sp3 : p; a : char; x : real; n : integer; Begin clrscr; {очистка экрана} New(sp); sp^.reference := Nil; sp1 := sp; {sp-начало списка, размещаем первый элемент} writeln('Formiruem spisok.'); {формируем список} write('Vvedite pervoe dannoe:'); readln(sp1^.data); Write('Budem esche vvodit dannye? (yn): '); readln(a); While a = 'y' Do {пока отвечаем 'y', увеличиваем список} Begin New(sp1^.reference); {организуем следующий элемент} sp1 := sp1^.reference; {связываем с последним} sp1^.reference := Nil; {делаем его последним, sp1-конец списка} write('Vvedite dannoe:'); readln(sp1^.data); {заполняем элемент данным} Write('Budem esche vvodit dannye? (yn): '); readln(a); End; writeln('Vvod dannyh okonchen.'); writeln; {* Пустая строка *} write('Vvedite dannoe dlya poiska:'); readln(x); {запрашиваем поисковый элемент} writeln; {* Вывод пустой строки *} sp2 := sp; {sp2-переменная для перемещения по списку - в начало списка} n := 0; While (sp2^.referenceNIL) Do {пока не конец списка} Begin If sp2^.data = x Then {если нашли искомый элемент, то} Begin sp3 := sp2^.reference; {запоминаем указатель на следующий элемент списка в sp3} If sp3^.datax Then Begin writeln('Udalen element ', sp3^.data); sp2^.reference := sp3^.reference; {исключаем элемент из списка} Dispose(sp3); {освобождаем память для исключенного элемента} n := n + 1; {увеличиваем счетчик удаленных элементов} End; End; sp2 := sp2^.reference; {перемещаемся далее по списку} End; writeln('Kol-vo udalennyh elementov:', n); writeln('Dlya vyhoda nazhat lyubuyu klavishu'); ReadKey; {ждем нажатия любой клавиши} End.... 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|