Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/47: Рейтинг темы: голосов - 47, средняя оценка - 4.79
Yeleupov

Составить программу, которая вставляет в список L новый элемент F

23.01.2013, 07:51. Показов 8578. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет помогите написать программу,буду очень благодарен.Вот условие: Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента E, если E входит в L.
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2013, 07:51
Ответы с готовыми решениями:

Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е
Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е

Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е
Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е.

Составить программу, которая вставляет в список L новый элемент F
буду очень благодарен:Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента E, если E входит в...

1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
23.01.2013, 13:16
Лучший ответ Сообщение было отмечено как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
program Project1;
 
type
  {Тип основных данных.}
  TData = Integer;
  {Тип указателя на элемент списка.}
  TPElem = ^TElem;
  {Тип элемента списка.}
  TElem = record
    Data : TData; {Основные данные.}
    PNext : TPElem; {Указатель на следующий элемент списка.}
  end;
  {Тип, описывающий однонаправленный список.}
  TDList = record
    PFirst, PLast : TPElem; {Указатели на первый и на последний элементы списка.}
  end;
 
{Начальная инициализация списка. Внимание! Эту процедуру можно выполнять
только в отношении пустого списка! Иначе - будут утечки памяти.}
procedure Init(var aList : TDList);
begin
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
{Добавление элемента в конец однонаправленного списка.}
procedure Add(var aList : TDList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := nil;
  if aList.PFirst = nil then
    aList.PFirst := PElem
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem;
end;
 
{Особождение памяти, занятой под список.}
procedure Free(var aList : TDList);
var
  PNext, PDel : TPElem;
begin
  PNext := aList.PFirst;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
{Распечатка однонаправленного списка.}
procedure WriteList(const aList : TDList);
var
  PElem : TPElem;
begin
  if aList.PFirst = nil then begin
    Write('Список пуст.');
    Exit;
  end;
 
  PElem := aList.PFirst;
  while PElem <> nil do begin
    if PElem <> aList.PFirst then Write(', ');
    Write(PElem^.Data);
    PElem := PElem^.PNext;
  end;
end;
 
var
  L : TDList;
  PElem, PPrev, PNew : TPElem;
  Data, E, F : TData;
  i, Code : Integer;
  S : String;
begin
  {Начальная инициализация списка.}
  Init(L);
 
  repeat
    //Создание списока.
    Writeln('Создание списка.');
    Writeln('Прекратить ввод - пустая строка + Enter.');
    i := 0;
    repeat
      Write('Элемент ', i + 1, ': ');
      Readln(S);
      if S <> '' then begin
        Val(S, Data, Code);
        if Code = 0 then begin
          Inc(i);
          Add(L, Data);
        end else
          Writeln('Неверный ввод. Повторите.');
      end;
    until S = '';
    Writeln('Составлен список:');
    WriteList(L);
    Writeln;
 
    repeat
      Write('Задайте значение искомого элемента (E): ');
      Readln(S);
      Val(S, E, Code);
      if Code <> 0 then
        Writeln('Неверный ввод. Повторите.');
    until Code = 0;
    repeat
      Write('Задайте значение вставляемого элемента (F): ');
      Readln(S);
      Val(S, F, Code);
      if Code <> 0 then
        Writeln('Неверный ввод. Повторите.');
    until Code = 0;
 
    {Ищем первый элемент со значением E и в случае его обнаружения
    вставляем перед ним элемент со значением F.
    Чтобы вставить перед элементом новый элемент мы должны знать указатель
    на предыдущий элемент. Для этого заведена переменная PPrev.}
    PPrev := nil; {Указатель на предыдущий элемент списка.}
    PElem := L.PFirst; {Указатель на текущий элемент списка.}
    PNew := nil; {Указатель на новый элемент.}
    while (PElem <> nil) and (PNew = nil) do
      if PElem^.Data = E then begin
        {Выделяем память для нового элемента и получаем указатель на неё.}
        New(PNew);
        {Записываем данные.}
        PNew^.Data := F;
        {К новому элементу прикрепляем ту часть списка, которая идёт после элемента PPrev.}
        PNew^.PNext := PElem;
        {К элелменту PPrev прикрепляем элемент PNew. (А к PNew уже прикреплена остальная часть списка.)}
        if PPrev = nil then
          L.PFirst := PNew
        else
          PPrev^.PNext := PNew;
      end else begin {Переходим к следующей паре элементов.}
        PPrev := PElem;
        PElem := PElem^.PNext; {Получаем указатель на следующий элемент списка.}
      end;
 
    if PNew <> nil then begin
      Writeln('Новый элемент F вставлен в список.');
      Writeln('Список после вставки:');
      WriteList(L);
      Writeln;
    end else
      Writeln('Элемента Е нет в списке. Новый элемент F в список не вставлен.');
 
    {Освобождение памяти, занятой под список.}
    Free(L);
    Writeln('Память, занятая под список, освобождена. Работа завершена.');
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2013, 13:16
Помогаю со студенческими работами здесь

Описать процедуру, которая вставляет в список А новый элемент К1
через стек или очередь!!!! Описать процедуру, которая вставляет в список А новый элемент К1 перед первым вхождением элемента К, если К...

Написать процедуру, которая вставляет в упорядоченный непустой список новый элемент
Написать процедуру, которая вставляет в непустого список L,элементы которого упорядочены по возрастанию значений одного из полей таблицы,...

Написать программу, которая вставляет в список L новый элемент F за каждым вхождением элемента E (2)
Друзья, помогите разобраться с кодом программы. Надо Написать программу, которая вставляет в список L новый элемент F за каждым...

Написать процедуру, которая вставляет в непустой список L новый элемент E перед его последним элементом
Помогите пожалуйста

Составить программу, которая вставляет в список L новый элемент F за каждым вхождением элемента E
помогите пож.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru