program makeMarkedList; type nodo = record info : integer; next : integer end; vectorNodo = array [0..15] of nodo; vector = array [0..15] of integer; var n,nMasUno : integer; logn,lognMenosUno : integer; i : integer; x : integer; lista : vectorNodo; head,tail : integer; procedure log2(n : integer;var x : integer); begin if n<=0 then writeln('error') else begin x := 0; while &x < n do x := x+1; end end; procedure inicializa; var i,actual : integer; begin writeln('SUBLISTA DE UNA LISTA ENLAZADA'); i := 0; write('N£mero de elementos en la lista: '); read(nMasUno); writeln(''); n := nMasUno-1; log2(nMasUno,logn); lognMenosUno := logn - 1; write('Cabecera de lista (entre 0 y ',n,'): '); read(head); writeln(''); write('Informaci¢n en ese nodo (un n£mero): '); read(lista[head].info); writeln(''); actual := head; repeat write('introduzca siguiente de lista[',actual,'] '); read(lista[actual].next); writeln(''); actual := lista[actual].next; write('introduzca informaci¢n de lista[',actual,'] '); read(lista[actual].info); i := i+1; until (i>=n); lista[actual].next := actual; tail := actual; write('Marcar elementos con informaci¢n: '); read(x); writeln(''); end (* inicializa *); procedure resultados; var i : integer; found : boolean; begin if lista[head].info = x then begin write('RESULTADOS: Head = ',head,' ,Tail = ',tail,'. '); i := head; while (i <> tail) do begin write('(',i,',',lista[i].info,')'); write('->'); i := lista[i].next; end; write('(',i,',',lista[i].info,')'); end else write('Sublista vac”a. '); writeln(''); end; begin inicializa; i := 0; while (i < logn) do begin parallel 0..n do if lista[lista[name].next].info <> x then lista[name].next := lista[lista[name].next].next; i := i+1; end; parallel 0..n do begin if name = head then if lista[name].info <> x then head := lista[name].next; if lista[lista[name].next].info <> x then begin lista[name].next := name; if lista[name].info = x then tail := name; end; end; resultados; end.