Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- public class proyecto_final {
- //estructura para la lista doble.
- public static class Node{
- private int tiempo;
- private int atendido;
- private String aplicacion;
- private Node siguiente;
- private Node anterior;
- public Node(int t,String a){
- tiempo=t;
- atendido=0;
- /*es cero porque al inicio no se atiende la aplicación
- despues que se elije la opción de atender aplicaciones
- es cuando este campo toma valor*/
- aplicacion=a;
- siguiente=anterior=null;
- }
- }
- // genera el tiempo que tarda la aplicacion aleatoriamente
- public static int generarTiempo(){
- int ti;
- ti=(int)(Math.random()*100);
- return ti;
- }
- //Cuenta cuantos elementos hay en la lista
- public static int cuentaElementos(Node lista){
- int cont=0;
- while(lista!=null)
- cont++;
- lista=lista.siguiente;
- return cont;
- }
- public static Node atender(Node top){
- int t=-1;
- String a;
- Node topi=null,backi=null;
- Node temp=null;// lista temporal auxiliar
- Node aux1;//lista auxiliar
- int con=cuentaElementos(top);//manda contar los elementos de la lista
- for(int i=1;i<=con;i++){
- aux1=top;
- //ciclo que buscara el mayor de la lista
- while(aux1!=null){
- if(aux1.tiempo>t){
- t=aux1.tiempo;
- a=aux1.aplicacion;
- }
- aux1=aux1.siguiente;
- }
- /*pone el dato encontrado en el ciclo en una lista nueva topi
- *y se atendera la aplicacion*/
- if(topi==null){
- topi=new Node(t,a);
- topi.atendido=i;
- backi=topi;
- }
- else{
- temp=new Node(t,a);
- temp.atendido=i;
- temp.siguiente=topi;
- top.anterior=temp;
- topi=temp;
- }
- //borra el buscado y atendido en la lista top
- borrar(top,t);
- }
- //se regresa el contenido de la lista topi
- return topi;
- }
- public static void borrar(Node top,int t){
- Node actual;
- boolean encon=false;
- actual=top;
- //ciclo de busqueda
- while((actual!=null)&&(!encon)){
- encon=(actual.tiempo==t);
- if(!encon)
- actual=actual.siguiente;
- }
- //Enlace de node anterior con siguiente
- if(actual!=null){
- if(actual==top){
- top=actual.siguiente;
- if(actual.siguiente!=null)
- actual.siguiente.anterior=null;
- }
- else if(actual.siguiente!=null){
- actual.anterior.siguiente=actual.siguiente;
- actual.siguiente.anterior=actual.anterior;
- }
- else
- actual.anterior.siguiente=null;
- actual=null;
- }
- }
- public static BufferedReader in=new BufferedReader (new InputStreamReader(System.in));
- public static void main(String[]args)throws IOException{// Main del programa
- String aplica;
- int opcion,ti,con;
- Node top=null,back=null,temp;
- do{
- System.out.print("\n1.Aplicación\n2.Atender Aplicaciones\n3.Imprimir Aplicaciones\n4.Salir\nOpción_> ");
- opcion=Integer.parseInt(in.readLine());
- switch(opcion){
- // se pedira la aplicación, pero no se atendera en este case
- case 1:
- System.out.print("\nAplicación: ");
- aplica=in.readLine();
- ti=generarTiempo();
- if(top==null){
- top=new Node(ti,aplica);
- back=top;
- }
- else{
- temp=new Node(ti,aplica);
- temp.siguiente=top;
- top.anterior=temp;
- top=temp;
- }
- break;
- //en este case se atendera la aplicación
- case 2:
- top=atender(top);
- break;
- //se imprime la lista de aplicaiones
- case 3:
- System.out.println("\n\tImprimiendo...\n");
- System.out.println("ATENDIDO\tTIEMPO (ms)\t APLICACIÓN");
- temp=top;
- while(temp!=null){
- System.out.println("\t"+temp.atendido+"\t\t\t"+temp.tiempo+"\t\t\t"+temp.aplicacion);
- temp=temp.siguiente;
- }
- break;
- case 4:
- System.out.println("\n\tHAS SALIDO DEL PROGRAMA");
- break;
- default:
- System.out.println("\n\tOPCIÓN EQUIVOCADA, ELIGE OTRA\n");
- break;
- }
- }while(opcion!=4);
- }
- }
Add Comment
Please, Sign In to add comment