Estructuras de datos (versión Java)
/** *?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(); p>
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 ?{ p>
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 )?{ p>
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));
}
}