Вообще как бы программа преобразовывает строки в списки . То есть "Дом" становиться списком "Д" "О" "М".
Вот у меня функция для преобразования строки в список:
program CharList;
uses
crt;
type
NodePtr = ^Node;
Node = record
next: NodePtr;
ch: char;
end;
CharListPtr = NodePtr;
function CharListOf(s: string): CharListPtr;
var
List: CharListPtr;
prevNode, newNode: NodePtr;
i: integer;
begin
List := nil;
for i := 1 to length(s) do
begin
if (i = 1) then
begin
new(List);
List^.next := nil;
List^.ch := s[i];
prevNode := List;
end
else
begin
New(newNode);
newNode^.ch := s[i];
newNode^.next := nil;
prevNode^.next:= newNode;
prevNode := newNode;
end;
end;
prevNode := nil;
CharListOf := List;
end;
begin
charlistof('hello world!');
end.
Нужно написать функцию
FUNCTION CLConcat(cl1, cl2: CharListPtr): CharListPtr; (*returns concatenation of cl1 and cl2 by copying both lists*)
вот у меня получилось, но пока только для копирования одного списка:
FUNCTION CLConcat(cl1: CharListPtr): CharListPtr;
var cl3 ,PrevNode, NewNode, current:CharListPtr;
begin
New(cl3);
cl3^.ch := cl1^.ch;
cl3^.next := nil;
prevNode := cl3;
current := cl1;
while current <> nil do
begin
current := current^.next;
new(NewNode);
newNode^.ch := current^.ch;
prevNode^.next:= newNode;
prevNode := newNode;
end;
CLConcat := cl3;
end;
Подскажите что не правильно? не могу проверить правильно или нет, так как не понимаю как мне вызывать эту функцию.
Очень нуждаюсь в помощи.