Однонаправленный список, не работает процедура очистки - 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;

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

  1. Объявлены следующие переменные:
    • i, num: integer (целочисленные переменные для хранения значения номера элемента и счетчика)
    • p, q: tPtr (указатель на элемент списка для обработки связного списка)
  2. Выводится сообщение с запросом на ввод номера элемента.
  3. Если список пуст, выводится сообщение об ошибке.
  4. Если номер равен 1, то первый элемент удаляется.
  5. Если номер больше 1, то начинается итерация по списку с второго элемента.
  6. Если текущий элемент не является последним и его номер не совпадает с введенным, то происходит переход к следующему элементу.
  7. Если текущий элемент является последним или его номер совпадает с введенным, то происходит удаление элемента.
  8. Удаленный элемент помещается в начало списка.
  9. Если после удаления элемента список остался пустым, выводится сообщение об ошибке.

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


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

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

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