viernes, 6 de septiembre de 2013

Estructuras De Datos Lineales Y No Lineales

Estructuras De Datos Lineales :
Las estructuras lineales de datos se caracterizan porque sus elementos están en secuencia, relacionados en forma lineal, uno luego del otro. Cada elemento de la estructura puede estar conformado por uno o varios sub-elementos o campos que pueden pertenecer a cualquier tipo de dato, pero que normalmente son tipos básicos.
Una estructura lineal de datos os lista esta conformada por ninguno, uno o varios elementos que tienen una relación dónde existe un primer elemento, seguido de un segundo elemento y así sucesivamente hasta llegar al último.


 Clasificación:


  • Pilas: En las pilas, las operaciones de acceso se realizan por un unico extremo de la lista, al cual normalmente se denomina tope de la pila. 
  • Operaciones básicas sobre una pila son: crearlo, destruirla, agregar un nuevo elemento, suprimir un elemento, consultar el elemento del tope verificar si esta vacía

 Manejo De Memoria Estatica: 

Es el uso de estructura de datos de tamaño fijo, colo los arreglos de uno o dos subindices.

 Programa De Pila Estatica:

package estructura;

import java.util.Scanner;

public class Pila_Estatica {
public static int op;
public static int tope;
    int pila[]= new int[10];
    public void insertar(){
        if(tope==10)
            System.out.println("Pila llena");
        else
    {
        System.out.println("Proporciona el dato para la pila");
        System.out.println("dato" + tope);
        Scanner cap= new Scanner(System.in);
        pila[tope]=cap.nextInt();
        tope++;
    }
}
    public void imprimir(){
        if(tope>=10){
            for(int topeM=tope-1;topeM>=0;topeM--){
                System.out.println("\n\n" + pila [topeM]);
            }
        }
        else
            System.err.println("pila vacia no hay nada que mostrar");
    }
    public void eliminar(){
        if(tope<0){
            System.out.println("pila vacia");
        }
        else
            if(tope==10){//Esto se usa cuando la pila esta totalmente llena,
                //ya que se incremento en insertar y quedo en 10, de lo contrario
                //noz arrojara un error de array
                tope--;
                pila[tope]=0;
                tope--;//se vuelve a decrementar para que este en la pocision correcta, porque
                //tenia un numero de mas
            }
            else{
            pila[tope]=0;
            tope--;
            }    
    }
    public static void main(String[] args) {
        Pila_Estatica p = new Pila_Estatica();
       String r;
       Scanner cap1=new Scanner(System.in);
       Scanner cap=new Scanner(System.in);
       tope=0;
       do{
           System.out.println("Menu principal:\n¿Que desea hacer con la pila?");
           System.out.println("1.-insertar");
           System.out.println("2.- eliminar");
           System.out.println("3.- imprimir");
           System.out.println("4.-salir");
           op=cap.nextInt();
              switch(op){
              case 1:
                  p.insertar(); break;
              case 2:
                  p.eliminar(); break;
              case 3:
                  p.imprimir(); break;
              case 4:
                  System.out.println("Adios!!!!"); break;
              default:
                  System.out.println("Selecion erronea, teclea otra opcion!!!");
          }
            System.out.println("deseas Realizar  Otra  Operacion con tu pila? /(S/N)");
          r=cap1.nextLine();
        } while(r.equalsIgnoreCase("S"));
    }
}

Programa Pila Estatica Modificado:

import java.util.Scanner;


public class pila_estatica {
public static int op;
public static int tope;
    int pila[]= new int[10];
    public void insertar(){
        if(tope==10)
            System.out.println("Pila llena");
        else
    {
       for(int i=0;i<pila.length;i++ ){// este es para evitar  la pregunta de si se quiere insertar un nuevo dato
        System.out.println("Dato Para La Pila");
        System.out.println("Dato:" + i);
        Scanner cap= new Scanner(System.in);
        pila[tope]=cap.nextInt();
        tope++;
    } }
}
    public void imprimir(){
        if(tope!=0){
            System.out.println("Datos");
            for(int topeL=tope-1;topeL>=0;topeL--){
                System.out.println("\n" + pila [topeL]);
            }
        }
        else
            System.err.println("Pila Vacia ... Sin Datos Para Mostrar");
    }
    public void eliminar(){
        if(tope<0){
            System.out.println("Pila Vacia");
        }
        else
            if(tope==10){//Esto se usa cuando la pila esta totalmente llena,
                //ya que se incremento en insertar y quedo en 10, de lo contrario
                //noz arrojara un error de array
                tope--;
                pila[tope]=0;
                tope--;//se decrementa para estar  en la posicion correcta
               
            }
            else{
            pila[tope]=0;
            tope--;
            }   
    }
    public static void main(String[] args) {
       pila_estatica pila = new pila_estatica();
      
      
       Scanner cap=new Scanner(System.in);
       tope=0;
              
       do{
           System.out.println("     Menu:");
           System.out.println("1.-insertar");
           System.out.println("2.- eliminar");
           System.out.println("3.- imprimir");
           System.out.println("4.-salir");
           System.out.println("Opcion A Elegir:");
           op=cap.nextInt();
           switch(op){
               case 1: pila.insertar();break;
               case 2:if(tope==10)
                   pila.eliminar();
               else
                       System.out.println("La Pila Esta Vacia ");
                   break;
               case 3:pila.imprimir();break;
               case 4:break;
               default:
                   System.out.println("Error");break;
           }
    }while(op!=4);

}
}
Manejo De Memoria Dinamica:

Son Aquellas Que crecen o se decrementan durante la ejecucion de los programas. 

Programa de Pila Dinamica:


package PILAS;
import java.util.*;

public class PilaDinamica {
    public static void main(String[] args) {
        Scanner leer =new Scanner(System.in);
        int num;
        int op;
        LinkedList lista = new LinkedList();
        do{
            System.out.println("\t Menuº \t");
            System.out.println("Operaciones con pilas");
            System.out.println("1.- Insertar");
            System.out.println("2.- Borrar");
            System.out.println("3.- Mostrar la pila");
            System.out.println("4.- Salir");
            System.out.println("\n");
            System.out.println("Elija la operación que desee");
            op =leer.nextInt();
            switch(op){
            case 1:
                System.out.println("Inserte Numero");
                num =leer.nextInt();
                lista.addLast(num);
                break;
            case 2:
                System.out.println("SE borrará el nodo final");
                lista.removeFirst();
                break;
            case 3:
                System.out.println("La lista es la siguiente");
                 List lista2 = new ArrayList (lista);
                 Iterator it = lista2.iterator();//añade otro nodo ,es un ciclo
                 //sirve para recorrer la lista
                 while (it.hasNext()){
                     System.out.println(it.next() + "");
                 }
                 break;
            case 4:
                System.out.println("Al rato");
                break;
            }
        }
        while(op != 4);
    }
}



  • Colas: En las colas, estas operaciones de acceso se realizan por ambos extremos de la lista llamados generalmente, inicio y fin de la cola. 
  • Operaciones básicas son: creación, destrucción, inserción al final de un nuevo elemento, consultar que elemento esta al inicio y cual al final, y verificar si la cola está vacía.


  • Dipolos: Que son colas dobles, las operaciones se realizan también por ambos extremos de la lista, en este caso todas las operaciones se pueden hacer por ambos extremos, es decir se pueden insertar o eliminar elementos por el tope o por el fin, a diferencia de la COLA donde se inserta siempre por el fin y se elimina por el tope.
 Estructuras De Datos No Lineales :

Se caracteriza por no existir una relación de sus elementos es decir que un elemento puede estar con cero uno o más elementos. Las estructuras no lineales de datos más generales son los árboles donde no existe ninguna relación de orden Predefinida. Esta estructura se usa principalmente para representar datos con una relación jerárquica entre sus elementos, como por ejemplo registros, árboles genealógicos y tablas de contenidos.




Bibliografía :

http://estr-org-datos.wikispaces.com/ESTRUCTURAS+LINEALES
http://es.wikipedia.org/wiki/Estructura_de_datos


No hay comentarios.:

Publicar un comentario