1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Dunkel_L |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: 0 |
Нужно написать процедуру в R-списе(info:string) (кольцевой список), которая меняет местами слова с четными номерами и нечетными (1-е со 2-м и т.д.)
|
![]() ![]() |
| Dunkel_L |
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: 0 |
Спасибо. Все работает. Но правда это у меня не кольцевой список.
Вот правильная реализация с твоей процедурой Код uses CRT; type ptr=^node; node=record info:string; link:ptr; end; var top,w2:ptr; a:word; b:string; procedure Push(n:string); var w1,w2:ptr; begin new(w1); w1^.info:=n; w2^.link:=w1^.link; w1^.link:=top; top:=w1; end; procedure vid(w1:ptr); begin if (w1<>w2) then begin; vid(w1^.link); write(w1^.info,' ') end; end; {__________инверсия списка__________} procedure pe(p:ptr); var q:ptr; T: string; begin q := p; while (p <> nil) and (p^.link <> nil) do begin T := p^.info; p^.info := p^.link^.info; p^.link^.info := T; p := p^.link^.link; end; end; {__________удаления списка__________} function Pop:string; var l:ptr; begin if top <> l then begin l:=top^.link; Pop:=top^.info; dispose (top); top:=l; end else begin Writeln(' Ошибка! Список пуст '); pop:=' '; end; end; {__________конец удаления__________} begin repeat clrscr; writeln(' 1-Ввод числа в список'); writeln(' 2-Удаление числа из списка'); writeln(' 3-Вывод списка на экран'); writeln(' 4-Вывод инвертированного списка'); writeln(' 5-Выход из программы'); write(' Введите команду '); readln(a); if a=1 then begin write(' Введите слово: '); readln(b); Push(b); end else if a=2 then begin Writeln; Write(Pop); writeln(' удалено из стека'); readln; end else if a=3 then begin Write(' Список:'); vid(top); Writeln; readln; end else if a=4 then begin Write(' Исходный список:'); vid(top); Writeln; Write(' Инвертированный список:'); pe(top); Writeln; readln; end else if a>5 then Begin Writeln(' Неправильный ввод! '); end; until(a=5) end. Но теперь, если в лоб ставить твою процедуру, то перевернутый список не выводиться на экран. Помоги разобраться, в чем беда. |
Dunkel_L R-список 13.12.2005 18:47
volvo Твою реализацию кольцевого списка - в студию … 13.12.2005 18:53
Dunkel_L
uses crt;
type ptr=^node;
node=record
info:s… 13.12.2005 19:13
volvo Вот так:
procedure pe(p:ptr);
var
q:ptr;
T: st… 27.12.2005 22:53
volvo Ну, так ты же его не выводишь...
Write(… 29.12.2005 3:13
Dunkel_L Да я слепой... :)
Теперь у меня возник другой воп… 29.12.2005 4:33
-Dunkel_L- В кольцевом списке недолжно быть указателя nil на … 29.12.2005 17:03
volvo Ты меня конечно извини, но твоя программа у меня в… 29.12.2005 17:28
Dunkel_L
procedure pe(p:ptr);
var
q:ptr;… 29.12.2005 18:55
volvo Выброси эту лекцию... Кольцевой список создается т… 29.12.2005 19:48
volvo Вот тебе принцип работы с R-списком (меню добавишь… 30.12.2005 5:14
Dunkel_L С НОВЫМ ГОДОМ!!!
Спасибо за твою реали… 4.01.2006 4:49
volvo Да... Твоя же задача для D-списка тоже решена на ф… 4.01.2006 14:55![]() ![]() |
|
Текстовая версия | 7.11.2025 10:23 |