sábado, 21 de agosto de 2010

Lista Sencilla

13 comentarios:

  1. ¿Por qué se necesitan dos constructores a la hora de elaborar una lista? (El que responda tiene bono)

    ResponderEliminar
  2. Porque para que una lista tenga contenido debe tener un nodo en donde "alojar" ese contenido, entonces en un método se crea la lista y en otro se crea el nodo con su enlace y su contenido.

    ResponderEliminar
  3. Si Se;or Felipe

    algo como así

    nodo(Object valor){
    dato=valor;
    siguiente=null;
    }

    nodo (Object valor,nodo siguientenodo){
    datos=valor;
    siguiente=siguientenodo;
    }

    ResponderEliminar
  4. public class Lista {

    private Nodo primero;
    private int cont;

    public Lista() {
    int cont = 0;
    primero = new Nodo(null);
    }

    public Lista(Object obj) {
    primero = new Nodo(obj);
    cont = 1;
    }

    public int size() {
    return cont;
    }

    public void insertar(Object obj) {
    if (cont == 0) {
    primero.setContenido(obj);
    } else {
    Nodo temp = this.primero;
    while (temp.getEnlace() != null) {
    temp = temp.getEnlace();
    }
    Nodo nTemp = new Nodo(obj);
    temp.setEnlace(nTemp);
    }
    cont++;
    }

    public void insertar(int Index, Object obj) {
    if (Index <= cont) {
    Nodo temp = this.primero;
    for (int i = 0; i < Index - 1; i++) {
    temp = temp.getEnlace();
    }
    Nodo nTemp = new Nodo(obj);
    Nodo temp2 = temp.getEnlace();
    temp.setEnlace(nTemp);
    temp = temp.getEnlace();
    temp.setEnlace(temp2);
    cont++;
    }
    }

    public void eliminar(int Index) {
    if (Index <= cont) {
    Nodo temp = this.primero;
    for (int i = 0; i < Index - 1; i++) {
    temp = temp.getEnlace();
    }
    Nodo temp2 = temp.getEnlace().getEnlace();
    temp.setEnlace(null);
    temp.setEnlace(temp2);
    temp = null;
    cont--;
    }
    }

    public Object consultarObjeto(int Index) {
    Nodo temp = this.primero;
    int conta = 0;
    if (Index <= cont) {
    while (conta != Index) {
    temp = temp.getEnlace();
    conta++;
    }
    }
    return temp.getContenido();
    }

    public Object[] toArray() {
    Object[] obj = new Object[cont];
    Nodo temp = this.primero;
    for (int i = 0; i < cont; i++) {
    obj[i] = temp.getContenido();
    temp = temp.getEnlace();
    }
    return obj;
    }

    public ArrayList toArrayList() {
    ArrayList arraylist = new ArrayList();
    Nodo temp = this.primero;
    for (int i = 0; i < cont; i++) {
    arraylist.add(temp.getContenido());
    temp = temp.getEnlace();
    }
    return arraylist;
    }

    public Vector toVector() {
    Vector vector = new Vector();
    Nodo temp = this.primero;
    for (int i = 0; i < cont; i++) {
    vector.add(temp.getContenido());
    temp = temp.getEnlace();
    }
    return vector;
    }

    ResponderEliminar
  5. public boolean estaVacio() {
    boolean estaVacio = false;
    if (cont == 0) {
    estaVacio = true;
    }
    return estaVacio;
    }


    pues hay dejo lo que consegui a ver si alguien lo puede mejorar y me avisa

    public Lista clone() {
    Lista clone = new Lista(this.getPrimero());
    return clone;
    }

    public void intercambioNodos(int Index, int Index2) {
    if (Index <= cont && Index2 <= cont) {
    Nodo temp1 = this.primero;
    Nodo temp2 = new Nodo(null);
    temp2.setContenido(temp1.getContenido());
    temp2.setEnlace(temp1.getEnlace());
    for (int i = 0; i < Index - 1; i++) {
    temp1 = temp1.getEnlace();
    }
    for (int i = 0; i < Index2 - 1; i++) {
    temp2 = temp2.getEnlace();
    }
    eliminar(Index-1);
    insertar(Index-1, temp2.getContenido());
    eliminar(Index2-1);
    insertar(Index2-1, temp1.getContenido());
    }
    }

    public void setCont(int cont) {
    this.cont = cont;
    }

    public void setPrimero(Nodo primero) {
    this.primero = primero;
    }

    public int getCont() {
    return cont;
    }

    public Nodo getPrimero() {
    return primero;
    }
    }

    ResponderEliminar
  6. public class Nodo {

    private Nodo enlace;
    private Object contenido;

    public Nodo(Object contenido){
    this.contenido = contenido;
    this.enlace = enlace;
    }

    public Object getContenido() {
    return contenido;
    }

    public void setContenido(Object contenido) {
    this.contenido = contenido;
    }

    public Nodo getEnlace() {
    return enlace;
    }

    public void setEnlace(Nodo enlace) {
    this.enlace = enlace;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
    return super.clone();
    }

    }

    ResponderEliminar
  7. Le falto modificar
    yo creo que así puede servir ese método

    public void modificar (Object cosa, int num){

    int otro = 0;
    if(num<=cuantos) {
    Nodo clon = this.inicio;

    while(otro<num){

    clon = clon.getEnlace();
    otro++;
    }

    ResponderEliminar
  8. veo que falta un cupo para lista sensilla

    public class ListaSencilla {

    private Nodo nodo1;

    public ListaSencilla() {

    nodo1 = null;

    }

    public Nodo getNodo1() {

    return nodo1;

    }

    public void adicionarObjeto(Object objeto) {

    while (true) {

    if (nodo1 == null) {
    nodo1 = new Nodo(objeto);
    break;
    } else {

    nodo1 = new Nodo(objeto, nodo1);
    break;
    }
    }
    }

    public int longitud() {

    Nodo tem = nodo1;
    int i;
    for (i = 0; tem != null; i++) {

    tem = tem.siguienteNodo();

    }
    return i;
    }
    public int consulPos (Object objeto){

    Nodo tem = nodo1;
    int pos = 0;
    for (int i = 0; tem != null ; i++) {

    if (tem.getObjeto() == objeto) {
    pos = i;
    break;
    }
    tem = tem.siguienteNodo();
    }
    return pos;
    }
    public boolean vacia(){
    boolean vacia = false;
    if (nodo1 == null) {
    vacia = true;
    }
    return vacia;
    }
    public Nodo consulNodo(int posicion){
    Nodo tem = nodo1;
    for (int i = 0; i < posicion; i++) {

    tem = tem.siguienteNodo();
    }
    return tem;
    }

    }

    ResponderEliminar
  9. public class Nodo {

    private Nodo enlace;
    private Object objeto;

    public Nodo(Object objeto) {

    this.objeto = objeto;
    enlace = null;

    }

    public Nodo(Object objeto, Nodo enlace) {

    this.enlace = enlace;
    this.objeto = objeto;

    }

    public Object getObjeto() {

    return objeto;

    }

    public Nodo siguienteNodo() {

    return enlace;

    }

    public String toString() {
    return objeto.toString();
    }
    }

    ResponderEliminar
  10. en vista de que felipe no implemento los metodos que pedio la profesora y solo implemneto los que se hiceron en clase envio mi versionde la lista sencilla ... por medio del link puden accerder al codigo ...

    http://sabestructuras.blogspot.com/

    ResponderEliminar
  11. Felipe C., esa no es precisamente la respuesta. Al método constructor sin parámetros se le delega la responsabilidad de crear la lista vacía. El segundo método tiene la responsabilidad de inicializar la lista con un objeto.

    ResponderEliminar
  12. Para este entrada Cristian tiene un bono.

    ResponderEliminar