## interchange nodes in a linked list

This function here interchanges nodes in a linked list

Code:
`void interchangeNodes(nodeptr&head, int n, int m);`
Here is what I have so far:

Code:
```void interchangeNodes(nodeptr& head, int n, int m) {
nodeptr temp2;
int i = 1;

if(temp == NULL  || temp->next == NULL)	//nothing happens if either is null value
return;
if(n == m)	//nothin happens if n node is equal to m node
return;
if(n < m){	//swap the two if n is less then m
int temp;
temp = n;
m = m;
temp = m;
}

if(m == 1) {
temp = temp->next;   //if n = 1, interchange first node and nth node
if(n == 2) {	//interchange first two nodes
}
}
else  //otherwise, advance temp to n - 1st node... do nothing if next is of null
{
while(i < n - 1) {
if(temp->next == NULL)
return;
else
temp = temp->next;
i++;
}
temp2 = temp->next;       //temp2 is nth node
//set 1st node to point to n + 1st node

}

if(m > 1){
while(i < m - 1){	//advance temp to point to m - 1st node, do nothing if next is of null
if(temp->next == NULL)
return;
else
temp = temp->next;
i++;
}
}

}```
Where I am getting stuck is this, maybe my whole function is wrong also, interchange 2 adjacent nodes... otherwise, advance temp2 to point to n - 1st node. Then temp2 will be the new node and once again set the 1st node to point to n + 1st nodes. Easy... I thought, until I first ran what I have so far and see that I am in an infinite loop. And so then I broke down and quit for this while being. Can help please be given here?