You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionbuscar (l:lista; x:integer):boolean;
var
encontre: boolean;
begin
encontre:=false;
while (l <> nil) and (not encontre) dobeginif (x = l^.dato) then
encontre:=true;
else
encontre:=false;
end;
buscar:=encontre;
end;
functionbuscar (l:lista; x:integer):boolean;
var//Ordenada De menor a mayor
encontre: boolean;
begin
encontre:=false;
while (l <> nil) and (not encontre) and (x > l^.dato) dobeginif (x = l^.dato) then
encontre:=true;
else
encontre:=false;
end;
buscar:=encontre;
end;
Crear_una_Lista_Vacia
begin
l:=nil;
end.
Agregar_un_Elemento_al_Principio_de_la_Lista
ProcedureAgregarAdelante (var L:lista; x:integer);
Var
nue:Lista;
Begin
New(nue);
nue^.datos:=x;
nue^.sig:=L;
L:=nue;
End;
Agregar_un_Elemento_al_Final_de_la_Lista
Ordenando la lista
Con un puntero al ultimo
procedureAgregarAlFinal1(var pri:lista;x:integer);
var
act, nue : lista;
begin
new (nue);
nue^.dato:= x;
nue^.sig := NIL;
if pri <> Nilthenbegin
act := pri ;
while (act^.sig <> NIL ) do
act := act^.sig ;
act^.sig := nue ;
endelse
pri:= nue;
end;
procedureAgregarAlFinal2(var pri,ult:lista;x:integer);
var
nue : lista;
begin
new (nue);
nue^.dato:= x;
nue^.sig := NIL;
if pri <> Nilthen
ult^.sig := nue
else
pri := nue;
ult := nue;
end;
Eliminar_un_Elemento_de_la_Lista
ProcedureBorrarElemento (var pri:lista; nom:cadena50; var exito: boolean);
var ant, act: lista;
begin
exito := false;
act := pri;
while (act <> NIL) and (act^.dato <> nom) dobegin
ant := act;
act := act^.sig
end;
if (act <> NIL) thenbegin
exito := true;
if (act = pri) then
pri := act^.sig
else
ant^.sig:= act^.sig;
dispose (act);
end;
end;
Insertar_un_Nuevo_Elemento_en_una_Lista_Ordenada
ProcedureInsertarElemento ( var pri: lista; x: Integer);
var
ant, nue, act: lista;
begin
new (nue);
nue^.dato := x;
act := pri;
ant := pri;
while (act<>NIL) and (act^.dato < x) dobegin
ant := act;
act := act^.sig ;
end;
if (ant = act) then
pri := nue
else
ant^.sig := nue;
nue^.sig := act ;
end;
Corte_de_control
ProcedureCorteDeControl(var l:lista;);
var
cantidad:integer;
actual:integer;
beginwhile (l <> nil) dobegin
actual:=l^.dato;
cantidad:=0;
while (l <> nil) and (actual = l^.dato) dobegin
cantidad := cantidad + 1;
l:=l^.sig;
end;
WriteLn('La cantidad de ',l^.dato, ' es ', cantidad);
end;
end;
Proceduremerge (E1,E2:lista; var l:lista);
Var
min: string;
Begin
l:= nil;
minimo (E1,E2,min);
while (min <> 'ZZZ') dobegin
AgregarAlFinal1 (l,min);
minimo (E1,E2,min);
end;
End;
Procedureminimo(var e1,e2:lista; var min:string);
Begin
min := 'ZZZ';
if (e1 <> nil) and (e2 <> nil)thenif (e1^.dato <= e2 ^.dato ) thenbegin
min:= e1^.dato;
e1:= e1 ^.sig;
endelsebegin
min:= e2 ^.dato;
e2:= e2 ^.sig;
endelseif (e1 <> nil) and (e2 = nil) thenbegin
min:= e1^.dato;
e1:= e1 ^.sig;
endelseif (e1 = nil) and (e2 <> nil) thenbegin
min:= e2 ^.dato;
e2:= e2 ^.sig;
end;
end;
Merge_entre_mas_de_dos_Listas
proceduremerge(v : vector; var l : lista);
var
min : string;
ult : lista;
begin
minimo(v,min);
while (min <> 'ZZZ') dobegin
AgregarAlFinal2(l,ult,min);
minimo(v,min);
end;
end;
procedureminimo(var v : vector; var min : string);
var
pos, i : integer;
begin
min := 'ZZZ';
pos := -1;
for i:= 1to dimF doif (v[i] <> nil) and (v[i]^.dato <= min) thenbegin
min := v[i]^.dato;
pos := i;
end;
if (pos <> -1) then
v[pos] := v[pos]^.sig;
end;
Merge_Acumulador
proceduremerge(var l :lista_nueva;v:vector) ;
var
ult : lista_nueva;
min, actual : venta_nueva;
begin
minimo(v,min);
while (min.codigo <> 9999) dobegin
actual.cant := 0;
actual.codigo := min.codigo;
while (min.codigo <> 9999) and (min.codigo = actual.codigo) dobegin
actual.cant:= actual.cant + min.cant;
minimo(v,min);
end;
AgregarAlFinal2(l,ult,actual);
end;
end;
procedureminimo(var v:vector; var x:venta_nueva);
var
i, pos : integer;
begin
x.codigo := 9999;
pos := -1;
for i := 1to cantidad doif (v[i] <> NIL) and (v[i]^.dato.codigo <= x.codigo) thenbegin
pos := i;
x.codigo := v[i]^.dato.codigo;
x.cant:=v[i]^.dato.cantidad_vendida;
end;
if (pos <> -1) thenbegin
x.codigo := v[pos]^.dato.codigo;
x.cant := v[pos]^.dato.cantidad_vendida;
v[pos] := v[pos]^.sig;
end;
end;