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

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

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

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





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

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


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

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

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


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

 





- Текстовая версия 28.04.2024 3:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name