1. Escribir un método que devuelva la
cadena formada por la concatenación de todos los elementos mayores que un
elemento pasado como parámetro
private String
concatMayoresRec(LinearNode<T> lista, T element){
String
listaconcat = "";
if (lista!=null) {
T
aux = lista.getElem(); T
elem = element;
if ( ((Comparable<T>) aux).compareTo(elem)
>0){
listaconcat = aux+
concatMayoresRec(lista.getNext(), element);
}else{
listaconcat
= concatMayoresRec(lista.getNext(), element);
}
}
return listaconcat;
}
public String concatMayores(T
element) {
String cadena=
concatMayoresRec(head, element); return cadena;
}
2. Escribir un método recursivo que
devuelva la lista inversa de la lista original (o this).
public OrderedListADT<T> invierte() {
LinkedOrderList<T>
inversion = new
LinkedOrderList<T>();
invierteRec(head, inversion );
return inversion;
}
private OrderedListADT<T> invierteRec (LinearNode <T> lista,
LinkedOrderList<T> inversion){
if (lista != null){
invierteRec(lista.getNext(),
inversion);
T
inver = lista.getElem();
inversion.addLast(inver);
}
return inversion;
}
Otra
posible implementación
private OrderedListADT<T> invierteRec (LinearNode <T> lista,
LinkedOrderList<T> inversion){
if (lista != null){ T
inver = lista.getElem();
inversion.addFirst(inver);
invierteRec(lista.getNext(),
inversion);
}
return inversion;
}
3. Escribir un método que calcule la
cadena formada por los elementos del primero al último seguido de guión y la
concatenación del último al primero. Si la lista es (a,b,c,d) la cadena
calculada sería “abcd-dcba”.
public String
concatElemAscDesc() { String cadena=
concatElemAscDescRec(head);
return cadena;
}
private String concatElemAscDescRec
(LinearNode<T> lista){
String
li = "";
if (lista!=null) {
li
= lista.getElem()+ concatElemAscDescRec (lista.getNext());
li=
li +
lista.getElem();
}
else { li= li + "-";
}
return li;
}