Вставить в список L новый элемент F за каждым вхождением элемента E - Turbo Pascal

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

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

Здравствуйте, выручите студента недоучку =))) работу надо сдать уже завтра. Задача стоит такая
Описать процедуру или функцию, которая вставляет в список L новый элемент F за каждым вхождением элемента E
Все работает правильно за одним только исключением, в этом исходнике задаешь количество элементов, которые она подбирает случайным образом, мне нужно сделать так, чтобы я мог задать эти элементы. Помогите подправить, я сам уже пытался-пытался, надо было все-таки на лекции ходить и букварь почитать))))))))))) Заранее благодарю и буду очень признателен ))
Люди помогите, завтра работу надо уже сдать...

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

textual
Листинг программы
uses crt;
type {список целых чисел}
 PSpisok = ^TSpisok;
 TSpisok = record
  Inf: integer; {целое число}
  Next: PSpisok; {указатель на следующий элемент}
 end;
var
 h: PSpisok; {первый элемент списка}
 L: PSpisok; {список}
 x: PSpisok; {последний элемент списка}
 t: PSpisok; {используется при добавлении элемента в список}
 i,n,e,f:integer;
begin
 clrscr;
 write('Введите кол-во элементов списка, N='); readln(n);
 randomize;
 {создаем первый элемент списка}
 New(L); {Выделяем память }
 L^.Next:=nil; {так как второго элемента нет, указатель на слудующий элемент
делаем пустым}
 writeln('vvedite zna4enie elementu');
 readln(L^.inf);
 {L^.Inf:=random(50)-25; {присваиваем случайное число}}
 h:=L;{запоминаем первый элемент}
 x:=L;{запоминаем последний элемент}
{создаем и заполняем следующие жлементы списка( до N)}
 for i:=2 to n do
  begin
   New(L^.Next); {выделяем память для следующего элемента списка}
   L:=L^.Next; {переходим к следущему элементу списка}
   {заполняем}
   L^.Next:=nil; 
   L^.Inf:=random(50)-25;
   x:=L; {запоминаем последний элемент списка}
  end;
 
{выводим элементы списка на экран}  
 L:=h; {переходим к первому элементу списка}
 while L^.Next<>nil do {пока указатель на следующий элемент не равен 0,
т.е. следующий элемент не существует }
  begin
   write(L^.Inf:4); {выводим значение}
   L:=L^.Next; {перемещаемся к следующему элементу}
  end;
 write(L^.Inf:4); {выводим последний элемент списка}
 
 writeln;
 
 write('E='); readln(e); {ввод е - целое число}
 write('F='); readln(f); {ввод f - целое число}
 L:=h; {переходим к первому элементу списка}
  while L^.Next<>nil do {перемещаемся до предпоследнего элемента списка}
   begin
    if (L^.Inf = e) {текущий элемент равен е и последующий элемент не равен е}
     then
      begin
    t:=L^.Next; {запоминаем указатель на следующий элемент}
    New(L^.Next); {выделяем память для нового  элемента списка}
    L:=L^.Next; {переходим к следущему (новому) элементу списка}
    L^.Inf:=f;
    L^.Next:=t; {связываем список}
      end;
    L:=L^.Next; {переходим к следующему элементу списка}
   end;
 
 {дополнительно проверяем последний элемент списка, если он равен е, то
добавляем элемент f в конец списка}
    if (L^.Inf = e) {текущий элемент равен е}
     then
      begin
    New(L^.Next); {выделяем память для нового  элемента списка}
    L:=L^.Next; {переходим к следущему (новому) элементу списка}
    L^.Inf:=f;
    L^.Next:=nil; {связываем список}
      end;
 
 {выводим элементы списка на экран}
 L:=h;
 while L^.Next<>nil do
  begin
   write(L^.Inf:4);
   L:=L^.Next;
  end;
 write(L^.Inf:4);
 
{освобождаем память}
 Dispose(L);
readln;
end.

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

Этот код написан на Turbo Pascal и выполняет следующие действия:

  1. Запрашивает у пользователя количество элементов, которые должны быть в списке (N).
  2. Создает переменные h, x, t, i, n, e, f, которые будут использоваться в процессе работы со списком.
  3. Выделяет память для первого элемента списка и устанавливает его свойства следующим образом:
    • Inf: задается случайное целое число от 0 до 50.
    • Next: устанавливается в nil, так как после первого элемента в списке нет следующего.
  4. Заполняет память для остальных элементов списка, используя цикл for.
  5. Выводит элементы списка на экран, начиная с первого элемента.
  6. Проверяет каждый элемент списка на равенство заданному значению (e). Если элемент равен e, то:
    • Создает новый элемент, который будет добавлен в конец списка.
    • Устанавливает указатель на следующий элемент в новом созданном элементе.
    • Связывает новый элемент со списком.
  7. Освобождает память, выделенную под элементы списка.

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


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

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

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