Im currently having trouble trying to understand linked lists. I have some code that uses nodes and have been asked to use an iterative approach to create a new node with the string parameter stored in it, at the index position specified in the integer parameter. The old node at the index position should follow the newly inserted node.
These are the fields:
// a string that contains the full name on the filesystem of an image file.
private String imageName;
// a reference to the next ImageNode in the linked list.
private ImageNode next;
//temporary node created to start the set of nodes
private ImageNode temp = this;
And this is the code i have written so far: Note that getNext() returns the next node.
private void addIter(String imageFileStr, int pos) {
int count = 0;
while(temp.getNext() != null){
temp = temp.getNext();
count++;
if(count == pos){
temp.getNext() = ???
}
}
}
Is this the right way to go about adding two nodes? If so, this would currently only work if the node needs to be added to the end of the set of current nodes. How would i modify the code so that it allows me to add a node in the middle of set and have the old nodes follow it as stated above (“The old node at the index position should now follow the newly inserted node.”)?
And finally, how do i create a variable (x) that is equal to the input from addIter so that i can set temp.getNext() = x? (currently depicted by question marks in the code).
It’s impossible to completely answer this without seeing more of your implementation, but here are few things:
temp.getNext() = ???doesn’t make sense, you can’t assign to a function call. You will need to add a methodsetNext(ImageNode node)that sets the next node to the given value.In your
addmethod, You need to create a new node using the input string (lets call itnewNode, find the node currently atpos(lets call itexistingNode), then you will need to do a couple things:newNode.nextto the node currently afterexistingNode(ornullif it’s the end of the list)existingNode.nexttonewNode.This will probably end up looking something like this: