Red de conocimiento informático - Aprendizaje de código fuente - Estructuras de datos (versión Java)

Estructuras de datos (versión Java)

paquete?game24.datastructure.list;

/** *?Nodo de la lista enlazada*?@autor?luoweifu * */

clase?Nodo{

Objeto?datos; //elemento de datos

Nodo?next; //nodo descendiente

public?Nodo()?{

this(null);

}

¿público?Nodo(¿Objeto?datos)?{

este.datos?=?datos;

este.siguiente ? =?null;

}

}

/** *?La lista vinculada del nodo principal, el subíndice comienza desde 0;? @ autor?Administrador * */

public?class?SinglyLinkedListlt; {

Nodo?head; //Nodo principal

int?size; /El tamaño de la lista enlazada

public?SinglyLinkedList()?{

head = new Node()

size = 0;

}

público?{

int?n?=?datas.length;

head?=?new?Node();

Nodo?p?=?head;

for(int?i=0;?ilt;n;?i)?{

p.next?= ?nuevo? Nodo(datos[i]);

p?=?p.next;

}

tamaño?=?n;

}

public?SinglyLinkedList(SinglyLinkedList?list)?{

head?=?list.head;

size?=?list. tamaño() ;

}

público?void?add(Objeto?e)?{

Nodo?p;

si (0? ==?tamaño)?{

p?=?head;

}?else?{

p?=?index(tamaño- 1);

}

p.next?=?nuevo?Nodo(e);

tamaño? /p>

public?void?concat(SinglyLinkedList?list)?{

Node?lastNode?=?this.index(size?-?1);

lastNode .siguiente? =?list.index(0);

tamaño? =?list.size();

}

public?void clear() ?{

head.next?=?null;

tamaño?=?0;

}

público ?{

Nodo?p?=?indice

(i);

return?p.data;

}

¿privado?Node?index(int?i)?{

Nodo?p?=?null;

if(igt;=0?amp;amp;?ilt;size){

p?=?head;

for(int?j=0;?jlt;=i;?j)?{

p?=?p.next;

}

}?

return?p;

}

público?{

Nodo?p?=?head.next;

int?i?=?0;

while(!p.data.equals(e))?{

p?=?p.next ;

i ;

}

si(ilt; tamaño)

retorno?i;

más ?

retorno?-1;

}

público?{

Nodo?p?=?index(i);

Nodo?p2?=?nuevo?Nodo(e);

p2.next?=?p.next;

p.next?=?p2 ;

p.next?=?p2;

tamaño ;

}

public?boolean?isEmpty()?{

if(size?==0)

return?true

else

return?false;

}

public?int?lastIndexOf(Object?e)?{

int?i?=?size-1;

while(!get (i).equals(e))?{

i--;

}

if(igt;=0)

retorno?i;

más?

retorno?-1;

}

público?void?remove(int?i )?{

if(igt;=0?amp;amp;?ilt;size)?{

Nodo?p?=?null;

if(i?==?0)

p?=?head;

else?{

p?=?index(i-1);

}

p.next?=?index(i).next

}

tamaño?;

}

público?{

Nodo?p?=?index(i);

p.data?=?e;

}

public?int?size()?{

Tamaño de retorno;?

}

@Override

public?boolean?equals(Object?obj)?{

SinglyLinkedList?(SinglyLinkedList)obj;<

/p>

if(this?==?obj?amp;?size?==?list.size)?{

Devuelve verdadero;

}

Devuelve falso;

}

/**

?*?Prueba tabla lineal

?* @param ?args

?*/

public?{

//List?list?=?new?LinkList();

//List?list?=?new?DoubleLinkList();

SinglyLinkedList?list1?=?new?

for(int?i=0;?ilt;10 ;? i )?{

list1.add(new?Integer(i));

}

Entero[]?a?=?{101 ,? 102,?103,?104,?105,?106,?107,?108,?109,?110};

ListaSinglyLinkedList?=?new?SinglyLinkedList(a);

list.remove(9);

System.out.print("size:"? ?list.size()? ?"\n");

System.out.println("isEmpty:"? ?list.isEmpty());

System.out.print("Elemento en la séptima posición:"? ?list.get(7)? ?" \n");

list.concat(list1);

for(int?i=0;?ilt; list.size();?i )?{

System.out.print(list.get(i)? ?"

}

list.add(21);

list.add(22);

list.insert(3,?new?Integer(5));

System.out.print("tamaño:" ? ? list.size()? ?"\n");

System.out.print("Índice de la primera aparición de 5:"? ?list.indexOf(5)? ?"\n ") ;

System.out.print("Índice de la última aparición de 5: "? ?list.lastIndexOf(5)? ?"\n");

list( 0,?new?Integer(30));

for(int?i=0;?ilt;list.size();?i )?{

Sistema .out .print(list.get(i)? ?"");

}

SinglyLinkedList?list2?=?list

System.out .println; ("\n? es?equals"? ?list2.equals(lista));

}

}