type
TPRec=^Trec;
TRec=record
ch:char;
next:TPRec;
end;
var
start1 : TPRec;
start2 : TPRec;
start3 : TPRec;
procedure addtolist(var start:TPRec, newel:TPRec);
begin
{процедру реализует добавление елемента.
Получает старт по вару, поскольку новый елемент может стать в начало списка,
и указатель на новый елемент}
end;
procedure newlist(st1:TPRec; st2:TPRec; var st3:TPRec );
begin
{слияние свух списков в 1 по заданому критерию}
end;
procedure addtolist(var start:TPRec, newel:TPRec);
var
wp,pp:TPRec;
begin
pp:=nil;
wp:=start;
{ищем место вставки нашего елемента}
while (wp<>nil) and (newel^.ch > Wp^.ch) do
begin
pp:=wp;
wp:=wp^.next;
end;
{проверям указатель пп(пред поинт), если он = нил то єто значит что у нас нет элементов в списке,
либо вставляемый элемент меньше первого}
if pp=nil then
begin
newel^.next:=start;
start:=newel;
end
else
begin
newel^.next:=pp^.next;
pp^.next:=newel;
end;
end;
Program spiski; Uses Crt;
Type
Tinf = Char;
Tptr = ^Tlist;
Tlist = record
inf : Tinf;
next : Tptr;
end;
Var A, B : Tptr;
n : char;
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;
q := p;
end;
Readln
end;
Procedure New_list (Var L1, L2 : Tptr);
Var pl_1, pl_2 : Tptr;
Begin
pl_1 := nil; pl_2 := L1;
While (pl_1 <> nil) and (L2^.inf > pl_1^.inf) do
pl_1 := pl_2;
pl_2 := pl_2^.next;
If (pl_1 = nil) then Begin
L2^.next := L1;
L1 := L2;
end
else Begin
L2^.next := pl_1^.next;
pl_1^.next := L2;
Writeln (pl_1^.inf);
end;
end;
Procedure Delete_list (Var h : Tptr);
Var p : Tptr;
Begin
While h <> nil do
Begin
p := h;
h := h^.next;
Dispose (p);
end;
end;
BEGIN Clrscr;
Writeln ('Enter spisok A');
Create_list(A);
Writeln ('Enter spisok B');
Create_list(B);
Writeln ('Okonchatelniy spisok C');
New_List(A, B);
Delete_list (A); Delete_list(B);
readln;
END.