Выполнить поиск элемента в списке - Pascal ABC
Формулировка задачи:
Разработать программу, выполняющую coздание односвязного списка, вывод его элементов на экран, а также указанные действия в соответствии с вариантом. Построить схемы действий со списком, отражающие связи между элементами списка, а также их изменение в случае добавления или удаления элементов из списка.Тип элементов списка – символы. Выполнить поиск элемента в списке. Помогите исправить
Листинг программы
- programlistexample;
- uses CRT;
- type
- plist = ^tlist;
- tlist = record
- data : real;
- next :plist
- end;
- var
- list, start : plist;
- i : integer; b:real;
- procedure Add (d : real);
- var
- l :plist;
- begin
- New (l);
- l^.data := d;
- l^.next := nil;
- if start <> nil then
- begin
- list := start;
- while list^.next<> nil do
- list := list^.next;
- list^.next := l
- end
- else
- start := l;
- list := l
- end;
- procedure Display;
- begin
- if start = nil then
- begin
- writeLn ('Списокпуст');
- exit
- end;
- list := start;
- while list <> nil do
- begin
- write (#32, list^.data);
- list := list^.next
- end
- end;
- procedure Clean;
- var
- l :plist;
- begin
- if start = nil then
- exit;
- list := start;
- while list <> nil do
- begin
- l := list;
- list := list^.next;
- Dispose (l)
- end;
- start := nil
- end;
- procedure Delete;
- var
- l :plist;
- begin
- if start = nil then
- exit;
- l := list^.next;
- begin
- list := start^.next;
- Dispose (start);
- start := list
- end
- end;
- procedure Search (d :real);
- var
- flag :boolean;
- begin
- list := start;
- flag := false;
- while (list <> nil) and (not flag) do
- begin
- if d = list^.data then
- flag := true
- else
- list := list^.next
- end
- end;
- begin
- while true do
- begin
- ClrScr;
- writeLn ('Выберитедействие');
- writeLn ('1 - Добавление');
- writeLn ('2 - Удаление');
- writeLn ('3 -Очистка памяти');
- writeLn ('4 - Вывод');
- writeLn ('5 - Выход');
- writeLn ('>>>>>');
- Display;
- gotoxy (7, 7);
- readLn (i);
- gotoxy (1, 9);
- casei of
- 1 : begin
- write ('Введитезначение ');
- readln (b);
- Add (b)
- end;
- 2 :begin
- write ('Искомое значение ');
- readLn (b);
- Search (b);
- if list = nil then
- begin
- writeLn ('списокпуст');
- readLn;
- continue
- end;
- Delete;
- end;
- 3 : Clean;
- 4 : begin
- ClrScr;
- Display;
- readLn;
- end;
- 5 : begin
- Clean;
- break
- end
- end
- end
- end.
Решение задачи: «Выполнить поиск элемента в списке»
textual
Листинг программы
- program listexample;
- uses CRT;
- type
- plist = ^tlist;
- tlist = record
- data: real;
- next: plist
- end;
- var
- list, start: plist;
- i: integer;
- b: real;
- f: boolean;
- procedure Add(d: real);
- var
- l: plist;
- begin
- New(l);
- l^.data := d;
- l^.next := nil;
- if start <> nil then
- begin
- list := start;
- while list^.next <> nil do
- list := list^.next;
- list^.next := l
- end
- else
- start := l;
- list := l
- end;
- procedure Display;
- begin
- if start = nil then
- begin
- writeLn('Список пуст');
- exit
- end;
- list := start;
- while list <> nil do
- begin
- write(#32, list^.data);
- list := list^.next
- end
- end;
- procedure Clean;
- var
- l: plist;
- begin
- if start = nil then
- exit;
- list := start;
- while list <> nil do
- begin
- l := list;
- list := list^.next;
- Dispose(l)
- end;
- start := nil
- end;
- procedure Delete;
- var
- l: plist;
- begin
- if start = nil then
- exit;
- l := list^.next;
- begin
- list := start^.next;
- Dispose(start);
- start := list
- end
- end;
- procedure Search(d: real; var flag: boolean);
- begin
- list := start;
- flag := false;
- while (list <> nil) and (not flag) do
- begin
- if d = list^.data then
- begin
- flag := true;
- break;
- end
- else
- list := list^.next
- end;
- end;
- begin
- while true do
- begin
- ClrScr;
- writeLn('Выберите действие');
- writeLn('1 - Добавление');
- writeLn('2 - Удаление');
- writeLn('3 - Очистка памяти');
- writeLn('4 - Вывод');
- writeLn('5 - Поиск');
- writeLn('6 - Выход');
- writeLn('>>>>>');
- Display;
- gotoxy(7, 8);
- readLn(i);
- gotoxy(1, 10);
- case i of
- 1:
- begin
- write('Введите значение ');
- readln(b);
- Add(b)
- end;
- 2:
- begin
- write('Искомое значение ');
- readLn(b);
- Search(b, f);
- if list = nil then
- begin
- writeLn('Список пуст');
- readLn;
- continue
- end;
- Delete;
- end;
- 3: Clean;
- 4:
- begin
- ClrScr;
- Display;
- readLn;
- end;
- 5:
- begin
- write('Искомое значение: ');
- readLn(b);
- Search(b, f);
- if f then
- writeln('Найденное значение: ', b)
- else
- writeln('Нет такого значения');
- readLn;
- end;
- 6:
- begin
- Clean;
- break
- end;
- end;
- end;
- end.
Объяснение кода листинга программы
- В программе используется структура данных список, представленная типом plist.
- Функция Add добавляет новый элемент в список.
- Функция Display выводит элементы списка.
- Функция Clean очищает список.
- Функция Delete удаляет элемент из списка.
- Функция Search ищет элемент в списке.
- Программа предлагает пользователю выбрать действие и выполняет соответствующую операцию.
- Код программы реализован с помощью условного оператора gotoxy для перемещения курсора на нужную позицию на экране.
- В случае поиска элемента программа выводит сообщение
Найденное значение:
, а затем просит пользователя ввести найденное значение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д