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

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

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

> Однонаправленный список, вхождение одного списка в другой
Boxer
сообщение 18.12.2010 2:31
Сообщение #1





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

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


Доброго времени суток!
Пишу функцию, входит ли список L1 в список L2

я пишу если 1й эл списка L1 равен i-ому эл списка L2, то запускаю массив while L1^.next<>nil do {а вот тут-то и вопрос! я хочу записать: сравниваем 2й и последующие эл списка L1 с i+1, i+2... эл списка L2, как это записать я не знаю =( }
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Boxer
сообщение 19.12.2010 0:45
Сообщение #2





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

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


volvo, я дописал этот код, однако в некоторых местах может произойти просто взрыв мозга! Прошу помочь исправить...
uses
crt;
type
TList=^list;
List =record
item:TElem;
Next:TList;
end;

Procedure creation(Var L:TList);
Var
x :TList;
Inf:TElem;
Begin
Writeln('Введите список ');
L:= Nil;
Writeln ('Введите элементы списка. Признак конеца ввода знак " . " ');
Read (Inf);
if Inf<>0 then
Begin
New(x);
x^.next:=nil;
x^.item:=inf;
L:=x;
Read (Inf);
while Inf<>0 do
Begin
New(x^.next);
x:=x^.next;
x^.next:=nil;
x^.item:=inf;
Read(inf);
End;
End;
Writeln;
End;

procedure Print(L: TList);
begin
while l<>nil do
begin
write(l^.item);
l:=l^.next;
end;
end;

function Search(var L1,L2:list);
var
flag:boolean;
curr_L1,curr_L2,L1_start:TElem;
begin
if (L1<>nil) and (L2<>nil) then
begin
L1 := L1_start;
while L2 <> nil do
begin
if L1_start^.item = L2^.item then
begin
curr_L1 := L1_start^.next;
curr_L2 := L2^.next;
flag:=true;
while (curr_L1 <> nil) and (curr_L1 <> nil)and flag do
begin
if curr_L1^.item<>curr_L2^.item then flag:=false;
curr_L1 := curr_L1^.next;
curr_L2 := curr_L2^.next;
end;
if curr_L1 = nil then
begin
write('found: ');
print(L2);
end;
end;
L2 := L2^.next;
end;
end;
end;

begin
clrscr;
write('Please enter list L1: ');readln(L1);
write('Please enter list L2: '):readln(L2);
creation(L1);
creation(L2);
Search(L1,L2);
end.


Сообщение отредактировано: Boxer - 19.12.2010 0:45
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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