С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263

Добавление элемента в двусвязный список.

29.10.2009, 19:05. Показов 5014. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скажите пожалуйста как в двусвязный список добавить ещё 2 элемента?
Вот список:
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
{его описание:}
Type
DSpisok=^pDSpisok;
pDSpisok=record
el:string;
next:DSpisok;
prev:DSpisok;
end;
{процедура, которая добавляет элементы в список:}
Procedure INSERT;
Begin
Repeat
Writeln('Vvesti element? Yes/No');
Readln(b);
If b='y' then
begin
q:=p2;
New(p2);
Write('Element: ');
Readln(x);
p2^.el:=x;
p2^.prev:=q;
q^.next:=p2;
p2^.next:=nil;
End;
Until b<>'y';
End; 
{процедура, которая выводит список на экран:}
Procedure PRINT_D_SPISOK;
begin
p:=p2;
Repeat
Writeln(p^.el,' ');
q:=p;
p:=p^.prev;
Until p=nil;
p:=q;
Repeat
Writeln(p^.el,' ');
q:=p;
p:=p^.next;
Until p=nil;
End;
{основная программа:}
INSERT;
PRINT_D_SPISOK;
Writeln;
readln;
End.
Вот мы ввели список и вывели его на экран. Теперь в этот список нужно добавить ещё 2 элемента. Что нужно дописать в основной программе?

Добавлено через 1 минуту
P.S. Выше вместо смайлов
next:DSpisok;
prev:DSpisok;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2009, 19:05
Ответы с готовыми решениями:

Добавление элемента в список
Если элемент списка&lt;0, тогда после него необходимо добавить 0.

Добавление элемента в линейный список!
Нужна помощь в написании процедуры добавления элемента в начало/конец списка без использования массива! Вот моя процедура: type ...

Добавление предпоследнего элемента в список
Объясните как работает добавление предпоследнего элемента в список в Паскале в виде процедуры, пожалуйста. Удаление наизусть знаю, а вот...

10
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
29.10.2009, 19:14
Цитата Сообщение от AC13 Посмотреть сообщение
Что нужно дописать в основной программе?
ну во первых в той каше что вы прислали очень много ошибок, и прежде чем что в основную программу нужно сначала то что есть написать верно.... ошибок много начиная с того что не объявлены переменные процедур и заканчивая тем что основная программа начинается словом begin
и заканчивается end.
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
30.10.2009, 15:51  [ТС]
Цитата Сообщение от Inadequate Посмотреть сообщение
ну во первых в той каше что вы прислали очень много ошибок, и прежде чем что в основную программу нужно сначала то что есть написать верно.... ошибок много начиная с того что не объявлены переменные процедур и заканчивая тем что основная программа начинается словом begin
и заканчивается end.
Ладно, вот полная программа:

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
Program Ex3;
uses crt;
 
Type
DSpisok=^pDSpisok;
pDSpisok=record
el:string;
next: DSpisok;
prev: DSpisok;
end;
 
Var p,p1,p2,q,q1,q2: DSpisok;
     x,b:string;
 
Procedure INSERT;
Begin
Repeat
Writeln('Vvesti element? Yes/No');
Readln(b);
If b='y' then
begin
q:=p2;
New(p2);
Write('Element: ');
Readln(x);
p2^.el:=x;
p2^.prev:=q;
q^.next:=p2;
p2^.next:=nil;
End;
Until b<>'y';
End; 
 
Procedure PRINT_D_SPISOK;
begin
p:=p2;
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.prev;
Until p=nil;
p:=q;
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.next;
Until p=nil;
End;
 
Begin
INSERT; 
PRINT_D_SPISOK;
Writeln;
readln;
End.
Переменные процедур объявлены перед процедурами.
Попробуйте запустить эту программу, она работает - выводит на экран введёный вами двусвязный список.
Мне нужно только дополнить или как-то изменить, в общем говоря доделать программу, чтобы в список добавить ещё 2 элемента.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
30.10.2009, 15:59
Цитата Сообщение от AC13 Посмотреть сообщение
p^.el+1
насколько я понял p^.el принадлежит типу string каким образом вы прибавляете ей 1???
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
30.10.2009, 16:06  [ТС]
Цитата Сообщение от Inadequate Посмотреть сообщение
насколько я понял p^.el принадлежит типу string каким образом вы прибавляете ей 1???
Ах, да, то ошибка (случайно совершенно так получилось) на это не обращайте внимания, всё остальное так =))
0
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
30.10.2009, 16:54
так может вот этот кусок из Вашей процедуры еще 2 раза запустить?
Pascal
1
2
q:=p2; New(p2); Write('Element: '); Readln(x);
p2^.el:=x; p2^.prev:=q; q^.next:=p2; p2^.next:=nil;
или добавить нужно в начало или допустим в середину списка между какими-нибудь элементами ???
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
30.10.2009, 17:41  [ТС]
Цитата Сообщение от Dnnn Посмотреть сообщение
так может вот этот кусок из Вашей процедуры еще 2 раза запустить?
Pascal
1
2
q:=p2; New(p2); Write('Element: '); Readln(x);
p2^.el:=x; p2^.prev:=q; q^.next:=p2; p2^.next:=nil;
или добавить нужно в начало или допустим в середину списка между какими-нибудь элементами ???
Да, спасибо, у меня получилось ))))), только я вот обнаружила новую проблему:
всё работает, только список выводится 2 раза:
сначала в обратном порядке, потом в том, как я его ввела... Что-то нужно исправить?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
30.10.2009, 17:45
Pascal
1
2
3
4
5
6
7
8
9
10
11
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.prev;
Until p=nil;
p:=q;
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.next;
Until p=nil;
это связано с тем что у вас здесь два цикла repeat определитель в какую сторону вам нужно вывести и уберите один...
2
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
30.10.2009, 17:45  [ТС]
А, нет, всё, я исправила СПАСИБО ВСЕМ БОЛЬШОЕ за помощь!!! ))))))))))))
0
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
30.10.2009, 17:46
вот в этом куске именно два раза и выводится
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// первый раз в общем-то в обратном порядке
p:=p2;
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.prev;
Until p=nil;
// а это в "прямом" порядке
p:=q;
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.next;
Until p=nil;
можно один из этих 2 кусков и удалить
2
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
30.10.2009, 17:46  [ТС]
Цитата Сообщение от Inadequate Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.prev;
Until p=nil;
p:=q;
Repeat
Writeln(p^.el+1,' ');
q:=p;
p:=p^.next;
Until p=nil;
это связано с тем что у вас здесь два цикла repeat определитель в какую сторону вам нужно вывести и уберите один...
Да, СПАСИБО!!! ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2009, 17:46
Помогаю со студенческими работами здесь

Добавление элемента в двусвязный список
правильно ли я делаю struct Lunka { int colorball; struct Lunka *next; struct Lunka *prev; }; struct Lunka...

Добавление элемента в двусвязный список
двусвязный список, как сделать добавление элемента? пока вот что сочинил. /*Список*/ struct list_item_t { list_item_t...

Добавление элемента в двусвязный список
Здравствуйте, нужно вставить элемент в двусвязный список Написала код, но он не работает. tek=first; while(tek) {i++; ...

Некорректное добавление элемента в двусвязный список
Добрый день! Потихоньку начал разбираться с двусвязным списком. Пока что реализовал только пару функций: добавление элемента списка и вывод...

Двусвязный кольцевой список - добавление элемента перед целевым
Examples.Collections.Generic.DoublyLinkedCycledList&lt;int&gt; list10 = new Examples.Collections.Generic.DoublyLinkedCycledList&lt;int&gt;(); ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru