{$codepage utf8} {$mode objfpc} Uses sysutils,classes; Type TCadenas=class Cad:ansistring; Constructor crear(ccad:ansistring); End; Constructor TCadenas.crear(ccad:ansistring); Begin cad:=ccad End; Var Lista01,Lista02,Lista03:Tlist; aux:pointer; i:byte; Begin Lista01:=Tlist.create; Lista02:=Tlist.create; Lista03:=Tlist.create; Writeln('=====LISTA01====='); Lista01.Add(TCadenas.crear('Juan')); Lista01.Add(TCadenas.crear('Jose')); Lista01.Add(TCadenas.crear('Miguel')); Lista01.Add(TCadenas.crear('Ana')); for i:=0 to lista01.Count-1 do Writeln('[',i:2,']',TCadenas(Lista01.items[i]).cad); Writeln('=====LISTA02====='); Lista02.Add(Lista01.items[2]); //Miguel Lista02.Add(TCadenas.crear('Sofia')); Lista02.Add(TCadenas.crear('Mary')); Lista02.Add(Lista01.items[0]); //Juan for i:=0 to lista02.Count-1 do Writeln('[',i:2,']',TCadenas(Lista02.items[i]).cad); Writeln('=====LISTA03====='); Lista03.Add(Lista02.items[2]); //Mary Lista03.Add(TCadenas.crear('Grace')); Lista03.Add(TCadenas.crear('Luis')); Lista03.Add(Lista01.items[0]); //Juan for i:=0 to lista03.Count-1 do Writeln('[',i:2,']',TCadenas(Lista03.items[i]).cad); Writeln('Buscando a Juan en la lista 02 y lista 03'); aux:=Lista01.items[0]; if Lista02.indexof(aux)>=0 then Writeln('Esta en la lista 02') else writeln('no se encontro en lista02'); if Lista03.indexof(aux)>=0 then Writeln('Esta en la lista 03') else writeln('no se encontro en lista03'); Writeln('Buscando a Grace en la lista 01 y lista 02'); aux:=Lista03.items[1]; if Lista01.indexof(aux)>=0 then Writeln('Esta en la lista 01') else writeln('no se encontro en lista01'); if Lista02.indexof(aux)>=0 then Writeln('Esta en la lista 02') else writeln('no se encontro en lista02'); Writeln('Borrando a Mary de lista03 para ponerlo en la lista 01'); aux:=Lista03.Extract(Lista02.items[2]); Lista01.add(aux); Writeln('=====LISTA03====='); for i:=0 to lista03.Count-1 do Writeln('[',i:2,']',TCadenas(Lista03.items[i]).cad); Writeln('=====LISTA01====='); for i:=0 to lista01.Count-1 do Writeln('[',i:2,']',TCadenas(Lista01.items[i]).cad); Writeln('Borrando a Juan de la lista03, pero dejandolo en lista01'); Lista03.remove(Lista01.items[0]); Writeln('=====LISTA03====='); for i:=0 to lista03.Count-1 do Writeln('[',i:2,']',TCadenas(Lista03.items[i]).cad); Writeln('=====LISTA01====='); for i:=0 to lista01.Count-1 do Writeln('[',i:2,']',TCadenas(Lista01.items[i]).cad); End.