Okay so this is the deal. I want to make a call to a routine that replaces all of one certain type of integer with a number. I have it to where it is replaceing the first, however, it misses the tail node.

public static SimpleList<Integer> replaceAll(Integer old, Integer nEw, SimpleList<Integer> l)
// returns a copy of l with all occurrences of old replaced with nEw
	{
		if(l.isEmpty())
			return new SimpleList<Integer>();
		else if (l.head().equals(old))
			return new SimpleList<Integer>(nEw, l.tail());
		if (l.tail().equals(old))
			return new SimpleList<Integer>(nEw, l.tail());
		else
			return new SimpleList<Integer>(l.head(), replaceAll(old, nEw,l.tail()));

to make the call to the method I use System.out.println(Proj7.replaceAll(new Integer(2),new Integer(88),l1)); the list contains 1,1,2,2,3,3. Its printing out 1,1,88,2,3,3.

is my logic wrong? any helpful hints?

btw .head() and .tail() are part of a class called SimpleList. It just points to the first, and next node.

I don't have a solution for you because I don't know enough about how this SimpleList class is working to understand why you would be returning a new reference that you create by using the nEw Integer and the tail of the list. Is there some reason you need to use a recursive call like is this for a project or something, if not you would be way better off just iterating through the list and doing comparisons? I think if you want help you're probably going to have to put the implementation of the constructors you're calling up on the forum.

ah sorry didn't see you're old post initially I'll look through that and see if I have a solution

This article has been dead for over six months. Start a new discussion instead.