IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

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

> R-список, Нужна помощь
Dunkel_L
сообщение 13.12.2005 14:47
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  0  +


Нужно написать процедуру в R-списе(info:string) (кольцевой список), которая меняет местами слова с четными номерами и нечетными (1-е со 2-м и т.д.)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 30.12.2005 1:14
Сообщение #2


Гость






Вот тебе принцип работы с R-списком (меню добавишь сам):
type
ttype = string;

plist = ^tlist;
tlist = record
info: ttype;
next: plist;
end;

var
first, last: plist;

{ Печать кольцевого списка (без рекурсии) }
procedure print(p: plist);
begin
repeat

write(p^.info, '':2);
p := p^.next;

until p = first;
writeln;
end;

{ Добавление элемента в конец списка }
procedure append(x: ttype);
var p: plist;
begin
new(p);
p^.info := x;
p^.next := nil;

if first = nil then first := p
else last^.next := p;

last := p
end;

{ Та процедура, которая тебе нужна }
procedure change(p: plist);
var
q: plist;
is_first: boolean;
T: ttype;
begin
is_first := true;
repeat

if (is_first or (p <> first)) and (p^.next <> first) then begin
T := p^.info;
p^.info := p^.next^.info;
p^.next^.info := T;

p := p^.next^.next;
end;
until (p = first) or (p^.next = first);

end;



var
X: ttype;

begin

first := nil; last := nil;

repeat

write('next element (empty string to exit): '); readln(X);
if X <> '' then append(X);

until X = '';
last^.next := first; { "Зацикливаем" список }

write('list: '); print(first);

change(first);

write('list after: '); print(first);

end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 11:21
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"