Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 09.10.2017
Сообщений: 132

Операции с двунаправленными списками

02.05.2018, 17:27. Показов 789. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу добить последние две процедуры Exception(удаление указанного элемента) и ExcFoll(удаление элемента после указанного)

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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
program list;
 
type
   tData = integer;
   
   tPtr = ^tNode;
   
   tNode = record
      data: tData;
      next: tPtr;
      prev: tPtr;
   end;
   
   tList = tPtr;
 
var
   key: integer;//пункт меню
   l: tList;
 
procedure Error(message: string);//выдача сообщения об ошибке
begin
   writeln('*** Ошибка: ' + message );
   writeln;
end;
 
procedure Init(var l: tList);//инициализация  списка
begin
   l := nil;
end;
 
function NotEmpty(l: tList): Boolean;//список не пуст
begin
   NotEmpty := l <> nil;
end;
 
procedure Put(var l: tList; D: tData);
var
   p{, p1}: tPtr;
begin
   new(p);
   p^.data := D;
   p^.next := l;
   l := p;
   //p^.prev := p1;
end;
 
procedure Drop(var l: tList);//удалить элемент
var
   p{, p1}: tPtr;
begin
   p := l;
   l := l^.next;
  { p1 := l;
   l := l^.prev;}
   Dispose(p);
end;
 
procedure Clear(var l: tList);//очистка
begin
   while NotEmpty(l) do
      Drop(l);
end;
 
procedure WriteList(var l: tList);
var
   p: tPtr;
begin
   p := l;
   while p <> nil do 
   begin
      write(p^.data, ' ');
      p := p^.next;
   end;
end;
 
procedure Fill(var l: tList);//заполнить список
var
   x: tData;
begin
   Clear(l);
   writeln( 'Вводите элементы(целые числа) по одному' );
   writeln( 'Конец ввода - 0' );
   repeat
      write( '? ' ); readln(x);
      if x <> 0 then
         Put(l, x);
   until x = 0;
end;
 
function Counter(l: tList): integer;//счетчик числа элементов
var
   p: tPtr;
   n: integer;
begin
   n := 0;
   p := l;
   while p <> nil do 
   begin
      n := n + 1;
      p := p^.next;
   end;
   Counter := n;
end;
 
procedure CountList(l: tList);//подсчитать число элементов
begin
   writeln( 'Число элементов в списке равно ', Counter(l) );
end;
 
procedure Add1(var l: tList);//включение эл. после указанного
var
   i, k: integer;
   q, p: tPtr;
   D: tData;
begin
   writeln( 'Номер элемента: ' ); readln(k);
   if k <= Counter(l) then begin
      new(q);
      writeln( 'Задайте значение элемента: ' ); readln(q^.data);
      p := l;
      for i := 1 to k - 1 do 
         p := p^.next;
      q^.next := p^.next;
      p^.next := q;
      WriteList(l);
   end
   else 
      writeln('Элемента с таким номером не существует');
end;
 
procedure Add2(var l: tList);//включение эл. перед указанным
var
   q, p: tPtr;
   i, k: integer;
begin
   writeln( 'Номер элемента: ' ); readln(k);
   if k <= Counter(l) then begin
      new(q);
      writeln( 'Задайте значение элемента: ' ); readln(q^.data);
      if k = 1 then begin
         q^.next := l;
         l := q;
         WriteList(l)
      end
      else begin
         p := l;
         for i := 1 to k - 2 do
            p := p^.next;
         q^.next := p^.next;
         p^.next := q;
         WriteList(l);
      end
   end
   else 
      writeln('Элемента с таким номером не существует');
end;
 
procedure Exception(var l: tList);//исключение указанного эл., доделать
var
   p, q: tPtr;
   k, i: integer;
begin
   writeln( 'Номер удаляемого элемента: ' ); readln(k);
    if NotEmpty(l)  then begin
       if k <= Counter(l) then begin
          new (q);
          p := l;
          for i := 1 to k do
             Drop(p);
          WriteList(l);
        end
        else
           writeln('Элемента с таким номером не существует');
        end
     else
        Error( 'Список пуст' );
end;
 
procedure ExcFoll(var l: tList);// исключение эл., следующего за данным
var
   p, q: tPtr;
   k, i: integer;
begin
   writeln( 'Номер удаляемого элемента: ' ); readln(k);
      if NotEmpty(l)  then begin
       if k <= Counter(l) then begin
          new (q);
          p := l;
          for i := 1 to k - 1 do
             Drop(p);
          WriteList(p);
        end
        else
           writeln('Элемента с таким номером не существует');
        end
     else
        Error( 'Список пуст' );
end;
 
procedure ShowMenu;//показать меню
begin
   writeln( 'Операции с двунаправленным списком ' );
   writeln( '-------------------------------' );
   writeln( '1 - Заполнение         2 - Очистка ' );
   writeln( '3 - Вывод на экран   4 - Число элементов ' );
   writeln( '5 - Включение элемента после указанного' );
   writeln( '6 - Включение элемента перед указанным ' );
   writeln( '7 - Исключение указанного элемента ' );
   writeln( '8 - Исключение элемента, следующего за указанным ' );
   writeln( '0 - Выход ' );
   writeln( 'Выберите нужный пункт ' );
end;
 
 
begin
   Init(l);
   ShowMenu;
   repeat
      writeln;
      write( '>' );
      readln(key);
      case key of
         1: Fill(l); //заполнить список
         2: Clear(l); //очистить
         3: WriteList(l); //напечатать
         4: CountList(l); //подсчитать число элементов
         5: Add1(l); //включение эл. после указанного
         6: Add2(l); //включение эл. перед указанным
         7: Exception(l); //исключение указанного эл.
         8: ExcFoll(l); //исключение эл., следующего за указанным
         0:             {Пусто};
      else
         ShowMenu;
      end;
   until key = 0;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2018, 17:27
Ответы с готовыми решениями:

Реализовать операции с двунаправленными списками
Написать программу, реализующую операции работы с двунаправленными списками. Помогите пожалуйста!!! Заранее спасибо!!!

Задача с двунаправленными списками
Помогите с задачей, пожалуйста Добавить поле sum в структуру spisok print12______print21 addFirst_____addLast ...

Операции со списками
нужно разбить исходный список на два где в 1 находятся положительные элементы а во втором отрицательные

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2018, 17:27
Помогаю со студенческими работами здесь

Операции со списками
Используя исходный вложенный список l1={{1,7},{8,3},{9,5},{7,5},{6,8},{5,6},{2,2}}, создайте одномерный список l2={8,11,14,12,14,11,4},...

Операции со сложными списками
Доброго времени суток! имеются два списка содержащие элементы классов src и dest. Необходимо удалить элементы списков совпадающих по...

Операции над списками
Нужно удалить из списка, состоящего из 20 чисел в диапазоне от 0 до 100, все элементы, которые больше a и меньше b, их значения вводятся с...

Простые операции со списками
Что добавить\удалить и как выровнять чтобы выводился список? ;;(A (B (C D (X E)) F G) H) (print (cons 'A (cons (cons...

Операции над списками
Формирование списка из n элемента. Добавление элемента, стоящего перед элементом со значением X. Удаление элемента, стоящего после элемента...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru