Boa noite pessoal, preciso fazer as seguintes funções só que estou batendo cabeça aqui, gostaria de uma luz.
Crie um novo método para a classe List (listas simplesmente encadeadas) que troque o conteúdo do terceiro elemento da lista com o conteúdo do quarto elemento, caso a lista possua pelo menos 4 elementos. Se os elementos forem trocados, o método deve retornar true, caso contrário, retornar false.
2. Crie um novo método para a classe List (listas simplesmente encadeadas) que remova primeiro elemento ímpar (valor da chave) da lista, caso exista. Se o elemento for removido o método deve retornar
Segue a classe List.
// class List definition
public class List {
private Node firstNode;
private Node lastNode;
private String name; // string like "list" used in printing
// construct empty List with "list" as the name
public List() {
this( "list" );
}
// construct an empty List with a name
public List( String listName ) {
name = listName;
firstNode = lastNode = null;
}
public Node getFirst(){
return firstNode;
}
public Node getLast(){
return lastNode;
}
// insert Object at front of List
public void insertAtFront( Object insertItem ) {
if ( isEmpty() ) // firstNode and lastNode refer to same object
firstNode = lastNode = new Node( insertItem );
else // firstNode refers to new node
firstNode = new Node( insertItem, firstNode );
}
// insert Object at end of List
public void insertAtBack( Object insertItem ) {
if ( isEmpty() ) // firstNode and lastNode refer to same Object
firstNode = lastNode = new Node( insertItem );
else {// lastNode's nextNode refers to new node
lastNode.setNext (new Node( insertItem ));
lastNode = lastNode.getNext();
}
}
// remove first node from List
public Object removeFromFront() throws EmptyListException {
if ( isEmpty() ) // throw exception if List is empty
throw new EmptyListException( name );
Object removedItem = firstNode.getData(); // retrieve data being removed
// update references firstNode and lastNode
if ( firstNode == lastNode )
firstNode = lastNode = null;
else
firstNode = firstNode.getNext();
return removedItem; // return removed node data
} // end method removeFromFront
// remove last node from List
public Object removeFromBack() throws EmptyListException {
if ( isEmpty() ) // throw exception if List is empty
throw new EmptyListException( name );
Object removedItem = lastNode.getData(); // retrieve data being removed
// update references firstNode and lastNode
if ( firstNode == lastNode )
firstNode = lastNode = null;
else { // locate new last node
Node current = firstNode;
// loop while current node does not refer to lastNode
while ( current.getNext() != lastNode )
current = current.getNext();
lastNode = current; // current is new lastNode
current.setNext(null);
}
return removedItem; // return removed node data
} // end method removeFromBack
// determine whether list is empty
public boolean isEmpty() {
return firstNode == null; // return true if List is empty
}
// output List contents
public void print() {
if ( isEmpty() ) {
System.out.println( "Empty " + name );
return;
}
System.out.print( "The " + name + " is: " );
Node current = firstNode;
// while not at end of list, output current node's data
while ( current != null ) {
System.out.print( current.getData().toString() + " " );
current = current.getNext();
}
System.out.println( "\n" );
}
} // end class List
Desde já obrigado.