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

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

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

> Односвязный список, Сравнение списков
*alt
сообщение 19.11.2007 17:14
Сообщение #1


Новичок
*

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

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


Задача
Проверить, содержатся ли элементы списка А в списке В в указанном списком А порядке.

Помогите, пожалуйста. Как реализовать решение??
Подкиньте идейку... с чего начать.... или алгоритм посоветуйте

Сообщение отредактировано: *alt - 19.11.2007 21:27
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 20.11.2007 23:35
Сообщение #2


Гость






Вноси данные в список не в обратном, а в прямом порядке (так, как они записаны в строке), тогда сможешь делать так:

function search (L1, L2:Tptr):boolean;
var pl_1, pl_2: tptr;
begin

pl_1 := L1;
pl_2 := L2;
while (pl_1 <> nil) and (pl_2 <> nil) do begin
if L1^.inf = pl_2^.inf then begin
pl_1 := L1;
while (pl_1 <> nil) and (pl_2 <> nil) and (pl_1^.inf = pl_2^.inf) do begin
pl_1 := pl_1^.next; pl_2 := pl_2^.next;
end;
end
else pl_2 := pl_2^.next;
end;

search := pl_1 = nil;
end;



Сообщение отредактировано: volvo - 20.11.2007 23:47
 К началу страницы 
+ Ответить 
*alt
сообщение 21.11.2007 0:27
Сообщение #3


Новичок
*

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

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


Так значит получаеися??
Код

type
  Tinf = integer;
  Tptr = ^Tlist;
  Tlist = record
    inf:Tinf;
    next:Tptr;
  end;

var
  A,B:Tptr;

procedure create_list (var L:Tptr );
var q,p:Tptr; e:Tinf;
  begin
    L:=nil;
    while not eoln do
      begin
        new(p);
        read (e);
        p^.inf:=e;
        p^.next:=nil;
        if l=nil then l:=p
        else q^.next:=p;
        q:=p;
      end;
    readln
  end;

function search (L1, L2:Tptr):boolean; {by Volvo (c)=)}
var pl_1, pl_2: tptr;
begin

  pl_1 := L1;
  pl_2 := L2;
  while (pl_1 <> nil) and (pl_2 <> nil) do
    begin
      if L1^.inf = pl_2^.inf then
      begin
        pl_1 := L1;
        while (pl_1 <> nil) and (pl_2 <> nil) and (pl_1^.inf = pl_2^.inf) do
          begin
            pl_1 := pl_1^.next;
            pl_2 := pl_2^.next;
          end;
      end
      else pl_2 := pl_2^.next;
    end;

  search := pl_1 = nil;
end;

procedure del_list (var h:Tptr);
var p:Tptr;
  begin
    while h<>nil do
      begin
        p:=h;
        h:=h^.next;
        dispose (p);
      end;
  end;


begin {main}

  write ('Введите элементы списка A: ');
  create_list(A);
  write ('Введите элементы списка B: ');
  create_list(B);

  if search(A,B) then writeln ('Содержится')
  else writeln ('Не Содержится');

  del_list (A);
  del_list (B);

  readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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