0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 8
1

Линейные списки (Входимость)

08.12.2010, 18:19. Показов 798. Ответов 1
Метки нет (Все метки)

Доброго времени суток. Прошу помощи вот с такой задачкой:

Даны линейные списки А и В, состоящие из целых чисел. Описать процедуру, которая проверяет, входит ли список А в список В.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
program p1;
 
{$APPTYPE CONSOLE}
 
uses SysUtils,Math;
type ss = ^list;
 
     list = record
     inf : integer;
     next : ss;
end;
 
Var u,p,q:array[1..2] of ss;
    m1,m2:array[1..255] of integer;
    F : Boolean;
    n1,n2,j:byte;
 
Procedure Form(x,r:byte);
Var i : integer;
Begin
     New(u[x]);
     u[x]^.next := nil;
     p[x]:=u[x];
     for i:=1 to r do
     begin
          new(p[x]^.next);
          p[x] := p[x]^.next;
          p[x]^.next := nil;
          read( p[x]^.inf);
     end;
End;
 
Procedure Output(x:byte);
Var I : Word;
Begin
     I := 0;
     p[x]:=u[x]^.next;
     While p[x]<>nil do
     Begin
          Inc(I);
          WriteLn(I:2,' ',p[x]^.inf);
          p[x] := p[x]^.next;
     End;
End;
Function ListIn(l1,l2:byte):boolean;
var i,h:byte;
b:boolean;
begin
i:=0;
p[l1]:=u[l1]^.next;
     While p[l1]<>nil do
     Begin
          Inc(I);
          m1[i]:=p[l1]^.inf;
          p[l1] := p[l1]^.next;
     End;
i:=0;
p[l2]:=u[l2]^.next;
     While p[l2]<>nil do
     Begin
          Inc(I);
          m2[i]:=p[l2]^.inf;
          p[l2] := p[l2]^.next;
     End;
result:=false;
for i:=1 to l1 do
for h:=1 to l2 do
begin
if m[i]...
 
end;
 
     {q[1] := u[1];
p[1] := u[1]^.next;
q[2] := u[2];
p[2]:= u[2]^.next;
Result := True;
while ((p[l1] <> nil)) do
begin
  if (p[l1]^.inf <> p[l2]^.inf) then  Result:=false;
  q[1] := q[1]^.next;
  p[1]:= p[1]^.next;
  q[2] := q[2]^.next;
  p[2]:= p[2]^.next;
 
end;}
 
Begin
      {for j:=1 to 255 do begin m1[i]:=9999; m2[i]:=9999; end;}
     Write('Input size of list A');
     read(n1);
     Form(1,n1);
     Write('Input size of list B');
     read(n2);
     Form(2,n2);
     WriteLn('List A');
     WriteLn;
     Output(1);
     WriteLn('List B');
     Output(2);
     if n1<n2 then
     begin
     if ListIn(1,2) then Write('List B include list A')
     else Write('List B not include list A')
     end else
     begin
     if ListIn(2,1) then Write('List A include list B')
     else Write('List A not include list B')
     end;
     //write(m1[2],' ',m2[2]);
     readln; readln;
End.
Вот мои неудачные попытки. То что в комментариях - работало, но он проверял как-то по первому значению и всё. Так же думал на счёт множества и совсем не туда заехал... Знаю, что на Си легко, но задание нужно именно на Делфи. Помогите, кто может. Очень буду благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2010, 18:19
Ответы с готовыми решениями:

Линейные списки
Пожалуйста помогите, не могу никак сделать. Завтра защита, просто не успеваю разобраться( ...

Нуждаюсь в написании программы. Линейные списки
Сформировать односвязный список из 7 записей, вывести список, удалить записи, удовлетворяющие...

Линейные списки
Имеется линейный список с последовательным хранением , элементами которого являются окружности....

Линейные списки
Вечер добрый! Видимо не далась мне тема про списки. Прошу помощи: Список вводится через...

1
53 / 52 / 22
Регистрация: 29.11.2010
Сообщений: 141
09.12.2010, 09:40 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
type TList = ^Llist;
LList = record
  Value: Integer;
  Next: TList;
end;
 
var
  a, b: TList;
 
function BinA(a, b: TList): Boolean;
var
  vBoolean: Boolean;
begin
  if b = nill then
    vBoolean := True
  else if a = nill then
    vBoolean := False
  else if a.Value = b.Value then
    begin
      vBoolean := BinA(a.Next, b.Next);
    end
  else
    vBoolean := False
 
  BinA := vBoolean;
end;
 
funciton ExistBinA(a, b: TList): Boolean;
var
  vBoolean: Boolean;
begin
  if ((a = nil) and (b = nil)) then
    vBoolean := True
  else if ((a <> nil) and (b <> nil)) then
    while (a <> nil) and (not vBoolean) do
      begin
        vBoolean := BinA(a, b);
        a := a.Next;
      end
  else
    vBoolean := False;
  
  ExistBinA := vBoolean;
end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2010, 09:40
Помогаю со студенческими работами здесь

Линейные списки
Помогите пожалуйста!!! Дан линейный список, содержащий имена,фамилии и отчества. Отсортировать...

Однонаправленные линейные списки
Помогите с одноправленным линейным списком.Происходит ошибка на этапе выполения.

Списки. Линейные массивы
Дано линейную таблицу A, которая состоит из целых чисел. Записать алгоритм и составить программу,...

Курсач, тема: линейные списки
Текст помощи для некоторой программы организован как линейный список. Каждая компонента текста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru