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

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

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

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


Новичок
*

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

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


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

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

Сообщение отредактировано: *alt -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Помощник капитана
****

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

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


B FAQ


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






*alt, для начала - условие уточни: допустим, есть 2 списка -
A = <1, 2, 3, 4, 5>
B = <1, 2, 2, 3, 3, 4, 2, 3, 4, 5>

То есть, список A не является составной частью списка B (в списке B нет неразрывной последовательности 1,2,3,4,5), но при этом все элементы A входят в состав B, причем в том же порядке... Значит ли это, что ответ на первоначальный вопрос - "Да"?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Честно хз. В задачнике дословно написана вышеизложенная формулировка
Но я думаю, что порядок должен быть именно таким, как это записанно в А, т.е. за 4 должно идти 5, иначе порядок нарушается...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 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 p:Tptr; e:Tinf;
  begin
    l:=nil;
    while not eoln do
      begin
        read (e);
        new(p);
        p^.inf:=e;
        p^.next:=l;
        l:=p;
      end;
    readln
  end;

function search (L1,L2:Tptr):boolean;
  var p,q:Tptr; ok:boolean;
    begin
      ok:=true;
      p:=L1; q:=L2;
      while (p<>nil) do
        begin
          while (q<>nil) do
            begin
              if p^.inf = q^.inf then
                ok:=false;
              q:=q^.next;
            end;
          p:=p^.next;
        end;
    search:=not ok;
    end;


begin {main}

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

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

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


Гость






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

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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Получается, что так... А что не проверишь сам-то? Лучший способ убедиться, что все работает...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Volvo, спасибо!!! В сё в порядке - асё хороршо!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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