Односвязный список, Сравнение списков |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Односвязный список, Сравнение списков |
*alt |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация: 0 |
Задача
Проверить, содержатся ли элементы списка А в списке В в указанном списком А порядке. Помогите, пожалуйста. Как реализовать решение?? Подкиньте идейку... с чего начать.... или алгоритм посоветуйте Сообщение отредактировано: *alt - |
volvo |
Сообщение
#2
|
Гость |
Вноси данные в список не в обратном, а в прямом порядке (так, как они записаны в строке), тогда сможешь делать так:
function search (L1, L2:Tptr):boolean; Сообщение отредактировано: volvo - |
*alt |
Сообщение
#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. |
Текстовая версия | 20.04.2024 16:21 |