Однонаправленный список, не работает процедура очистки - Pascal
Формулировка задачи:
неправильно работает процедура 'очистить'
Решение задачи: «Однонаправленный список, не работает процедура очистки»
textual
Листинг программы
procedure Delete(var l: tList); var i, num : integer; p,q : tPtr; begin Writeln('Введите номер элемента: '); Readln(num); if not NotEmpty(l) then // если список пуст Error('Нет элемента с заданным номером') else if num=1 then // если первый элемент begin q := l; l := l^.next; Dispose(q); end else // иначе остальные элементы begin i := 2; p := l; q := l^.next; while (i <> num) and NotEmpty(q) do begin p := q; q := q^.next; i := i + 1; end; if not NotEmpty(q) then Error('Нет элемента с заданным номером') else begin p^.next := q^.next; Dispose(q); end; end; end;
Объяснение кода листинга программы
- Объявлены следующие переменные:
- i, num: integer (целочисленные переменные для хранения значения номера элемента и счетчика)
- p, q: tPtr (указатель на элемент списка для обработки связного списка)
- Выводится сообщение с запросом на ввод номера элемента.
- Если список пуст, выводится сообщение об ошибке.
- Если номер равен 1, то первый элемент удаляется.
- Если номер больше 1, то начинается итерация по списку с второго элемента.
- Если текущий элемент не является последним и его номер не совпадает с введенным, то происходит переход к следующему элементу.
- Если текущий элемент является последним или его номер совпадает с введенным, то происходит удаление элемента.
- Удаленный элемент помещается в начало списка.
- Если после удаления элемента список остался пустым, выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д