今天读了一本关于线性表的书,写了一段代码:
program test301;
const maxlen=100;
type sqlist=record
data : array[1..maxlen] of char;
last : integer;
end;
var
i,p: integer;
l,A,B: sqlist;
x:char;
function length(var sq:sqlist) : integer;
begin
length :=sq.last;
end;
function locate(var sq:sqlist;x:char):integer;
var
i:integer;
begin
for i:=1 to length(sq) do begin
if(sq.data[i]=x) then begin
exit(i);
end;
end;
exit(0);
end;
procedure initlist(var sq:sqlist);
begin
for i:=1 to 5 do
begin
sq.data[i]:=chr(65+round(random(26)));
inc(sq.last);
end;
end;
procedure printlist(var sq:sqlist);
begin
for i:=1 to length(sq) do write(sq.data[i]);
writeln;
end;
procedure insert(var sq:sqlist;x:char;p:integer);
var
i:integer;
begin
for i:=sq.last+1 downto p do
sq.data[i+1]:=sq.data[i];
sq.data[p]:=x;
sq.last:=sq.last+1;
end;
procedure delete(var sq:sqlist;p:integer);
var
i:integer;
begin
for i:=p to sq.last do
sq.data[i]:=sq.data[i+1];
sq.last:=sq.last-1;
end;
procedure merge(var A:sqlist;B:sqlist);
var
i:integer;
begin
for i:=1 to B.last do begin
if(locate(A,B.data[i])=0) then insert(A,B.data[i],length(A)+1);
end;
end;
begin
randomize;
initlist(A);
initlist(B);
printlist(A);
printlist(B);
readln;
merge(A,B);
printlist(A);
readln;
end.