Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program ListaSE;
- Uses Crt;
- Type
- TPuntero=^TElem;
- TElem= Record
- info:Integer;
- next:TPuntero;
- end;
- Var
- ultimo:Integer;
- cab:TPuntero;
- {******************************************************************************}
- Procedure Inicializar(Var lista:TPuntero);
- Begin
- New(lista);
- ((lista^).next):=nil;
- ultimo:=0
- end;
- {******************************************************************************}
- Procedure CargaOrdenada(Var lista:TPuntero;Var ultimo:Integer);
- Var
- ant,sgte,aux:TPuntero;
- res:Char;
- control:Integer;
- Begin
- Writeln('Desea Ingresar un numero? s/n' );
- Readln(res);
- New(aux);
- While Res='s' Do
- Begin
- Writeln('Ingrese el numero');
- Readln((aux^).info);{Obtengo el numero a insertar por teclado}
- If (lista^).next= nil {Tratamiento por sec vacia}
- Then
- Begin{Insercion a la Cabeza}
- (lista^).next:=aux;
- (aux^).next:= nil;
- ultimo:=ultimo+1;
- end
- Else{Si tiene al menos un elemento}
- Begin
- ant:=lista; {Inicializacion de la adquisicion}
- sgte:=(lista^).next;
- control:=1;
- If ((sgte^).info)>=((aux^).info)
- Then {Tratamiento diferenciado del primer elem.En caso de que el primero sea mayor que el dato a ingresar}
- Begin
- (ant^).next:=aux;
- (aux^).next:=sgte;
- end
- Else
- Repeat
- ant:=(ant^).next;
- sgte:=(sgte^).next;
- control:=(control+1);
- Until (control=ultimo) or (((sgte^).info)>=((aux^).info));
- If ((sgte^).info)>=((aux^).info)
- Then
- Begin
- (aux^).next:=sgte;
- (ant^).next:=aux;
- end
- Else
- Begin
- (sgte^).next:=aux;
- (aux^).next:=nil;
- end;
- end;
- ultimo:=ultimo+1;
- Writeln('Desea ingresar otro numero? s/n');
- Readln(res);
- end;
- end;
- {******************************************************************************}
- Procedure Muestra(var lista:TPuntero;ultimo:Integer);
- Var
- a,control:Integer;
- aux:TPuntero;
- Begin
- control:=0;
- aux:=lista;
- Writeln('Ingrese el numero a partir del cual va a mostrar');
- Readln(a);
- Repeat
- aux:=(aux^).next;
- control:=(control+1);
- Until (a=(aux^).info) or (control=ultimo);
- If (a=(aux^).info)
- Then
- Begin
- Repeat
- aux:=(aux^).next;
- Writeln((aux^).info);
- control:=control +1;
- Until (control=ultimo);
- end
- Else
- Writeln('Elemento no hallado')
- end;
- {******************************************************************************}
- Procedure Interfaz();
- Var
- res:Char;
- Begin
- Repeat
- Clrscr;
- Writeln('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');
- Writeln(' MENU PRINCIPAL');
- Writeln('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');
- Writeln('');
- Writeln('');
- Writeln('(i) Cargar Lista.-');
- Writeln('(m) Mostrar Lista.-');
- Writeln('(s) Salir del Programa.-');
- GotoXY(1,10);
- res:=Readkey;
- Case res of
- ('i'):Begin
- Clrscr;
- CargaOrdenada(cab,ultimo);
- Writeln('');
- Writeln('Presione una tecla para volver al menu principal.');
- Readkey;
- end;
- ('m'):Begin
- Clrscr;
- Muestra(cab,ultimo);
- Writeln('');
- Writeln('');
- Writeln('Presione una tecla para volver al menu principal.');
- Readkey;
- end;
- ('s'):Begin
- Writeln('');
- Writeln('\\\\\\GRACIAS POR UTILIZAR ESTE PROGRAMA//////');
- end;
- end;
- Writeln('');
- Until (res='s');
- Readkey;
- end;
- {******************************************************************************}
- Begin
- Inicializar(cab);
- Interfaz();
- Readkey;
- end.
Add Comment
Please, Sign In to add comment