Выполнить поиск элемента в списке - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Разработать программу, выполняющую coздание односвязного списка, вывод его элементов на экран, а также указанные действия в соответствии с вариантом. Построить схемы действий со списком, отражающие связи между элементами списка, а также их изменение в случае добавления или удаления элементов из списка.Тип элементов списка – символы. Выполнить поиск элемента в списке. Помогите исправить

Решение задачи: «Выполнить поиск элемента в списке»

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.

Объяснение кода листинга программы

  1. В программе используется структура данных список, представленная типом plist.
  2. Функция Add добавляет новый элемент в список.
  3. Функция Display выводит элементы списка.
  4. Функция Clean очищает список.
  5. Функция Delete удаляет элемент из списка.
  6. Функция Search ищет элемент в списке.
  7. Программа предлагает пользователю выбрать действие и выполняет соответствующую операцию.
  8. Код программы реализован с помощью условного оператора gotoxy для перемещения курсора на нужную позицию на экране.
  9. В случае поиска элемента программа выводит сообщение Найденное значение:, а затем просит пользователя ввести найденное значение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы