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

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

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

> Односвязный список, Сравнение списков
сообщение
Сообщение #1


Новичок
*

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

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


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

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

Сообщение отредактировано: *alt -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.04.2024 16:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name