Динамическая память-списки, Линейный односвязный список |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Динамическая память-списки, Линейный односвязный список |
KOLYAN |
21.01.2008 18:03
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Nicolai Репутация: 0 |
Решите пожайлуста задачу: Составить программу, которая формирует список L включая в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2.
|
klem4 |
21.01.2008 18:15
Сообщение
#2
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Идешь по элементам более короткого списка из L1 и L2. Берешь очередной элемент, если его нет в списке L и он есть во более длинном списке, добавляешь его в список L. Вот так на вскидку.
Будут конкретные вопросы по реализаци, спрашивай, а так поиск + Все о динамических структурах данных. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
KOLYAN |
21.01.2008 18:25
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Nicolai Репутация: 0 |
Как составить процедуру, которая сравнивает элементы списков L1 и L2
|
klem4 |
21.01.2008 18:31
Сообщение
#4
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Я бы реализовал список как объект, в котором был бы метод - функция, возвращающая true в случае если элемент value присутствует в списке. is_include(const value: Integer): Boolean;
Ну а реализация, запоминаем начало списка, далее идем по списку до тех пор пока не дойдем до конца либо пока не наткнемся на такой элемент, что head^.value = value. Если дошли до конца, то вернуть функция дожна false иначе true, ну и не забыть установить head на начало списка, (адрес мы запомнили в начале алгоритма) вот примерно так. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
21.01.2008 18:36
Сообщение
#5
|
Гость |
Цитата Я бы реализовал список как объект, в котором был бы метод - функция, возвращающая true в случае если элемент value присутствует в списке. KOLYAN, если что - вот тут такой объект реализован: Односвязный список Только функция называется Present... |
KOLYAN |
22.01.2008 16:49
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Nicolai Репутация: 0 |
program spiski;
uses crt; type tinf=char; tp=^tel; tel=record inf:tinf; psled:tp; end; var head, head1:tp; m,r:char; pe:tp; t,n:integer; procedure vsp(var iel:tinf; var head:tp; n:integer); var pe:tp; i:integer; begin for i:=1 to n do begin read(m); new(pe); pe^.inf:=iel; pe^.psled:=head; head:=pe; end; end; procedure vibor(..... while (head<>nil) and (head1<>nil) do begin head^.inf= then begin clrscr; writeln('n='); readln(n); writeln('t='); readln(t); writeln ('Vedite elementi spiska L1'); vsp(m,head,n); writeln ('Vedite elementi spiska L2'); vsp(r,head1,t); end. |
Текстовая версия | 27.04.2024 23:52 |