R-список, Нужна помощь |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
R-список, Нужна помощь |
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. Но теперь, если в лоб ставить твою процедуру, то перевернутый список не выводиться на экран. Помоги разобраться, в чем беда. |
Текстовая версия | 19.05.2024 21:12 |