Using recursive methods in Java
•
Java
For homework, I was asked to write an inclusion method for the custom linked list
public class OrderedList { private Node first; //Constructor public OrderedList() { this.first = null; } //Return the number of items in the list public int size() { int counter = 0; Node pointer = this.first; while (pointer != null) { counter++; pointer = pointer.next; } return counter; } //Return an array of copies of the stored elements public Comparable[] getStore() { Comparable[] elements = new Comparable[size()]; Node pointer = this.first; if (this.first == null) { return elements; } else { int i = 0; while (pointer != null) { elements[i] = pointer.data; pointer = pointer.next; i++; } return elements; } } //true iff item matches a stored element //Recursive public boolean contains(Comparable item) { //Base case if (this.first == null) { return false; } Node pointer = this.first; this.first = this.first.next; if (pointer.data.compareTo(item) == 0) { return true; } //Recursive case else { boolean info = contains(item); pointer.next = this.first; this.first = pointer; return info; } }
Solution
First, I like to do this:
public boolean contains(Comparable item) { return containsHelper(this.first,Comparable item); } private boolean containsHelper(Node node,Comparable item) { //base case if(node == null) { return false; } else { if(node.data.compareTo(item) == 0) { return true; } return containsHelper(node.next,item); } }
This hides the user's implementation details and prevents the list from being overwritten when the method is run
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码