Please implement this function: void swap(int pos1, int pos2) {}. There's an answer from the previous teacher but he added '' node** hRef " in the function (see below) please correct without the href. For LinkedList, to maintain integrity of data in the structure, you are not to swap directly the element, nor remove a node. Instead, you are to only change the nodes' next pointers. PLEASE CORRECT THIS ONE void swap(node** hRef, int pos1, int pos2) { if (pos1 == pos2) return; node *prevNode1 = NULL; node* currNode1 = *hRef; while (currNode1 && currNode1->index != pos1) { prevNode1 = currNode1; currNode1 = currNode1->next; } node *prevNode2 = NULL; node *currNode2 = *hRef; while (currNode2 && currNode2->index != pos2) { prevNode2 = currNode2; currNode2 = currNode2->next; } if (currNode1 == NULL || currNode2 == NULL) return; if (prevNode1 != NULL) prevNode1->next = currNode2; else *hRef = currNode2; if (prevNode2 != NULL) prevNode2->next = currNode1; else *hRef = currNode1; node* temp = currNode2->next; currNode2->next = currNode1->next; currNode1->next = temp; }
Please implement this function:
void swap(int pos1, int pos2) {}.
There's an answer from the previous teacher but he added '' node** hRef " in the function (see below) please correct without the href.
- For LinkedList, to maintain integrity of data in the structure, you are not to swap directly the element, nor remove a node. Instead, you are to only change the nodes' next pointers.
PLEASE CORRECT THIS ONE
void swap(node** hRef, int pos1, int pos2) {
if (pos1 == pos2)
return;
node *prevNode1 = NULL;
node* currNode1 = *hRef;
while (currNode1 && currNode1->index != pos1) {
prevNode1 = currNode1;
currNode1 = currNode1->next;
}
node *prevNode2 = NULL;
node *currNode2 = *hRef;
while (currNode2 && currNode2->index != pos2) {
prevNode2 = currNode2;
currNode2 = currNode2->next;
}
if (currNode1 == NULL || currNode2 == NULL)
return;
if (prevNode1 != NULL)
prevNode1->next = currNode2;
else
*hRef = currNode2;
if (prevNode2 != NULL)
prevNode2->next = currNode1;
else
*hRef = currNode1;
node* temp = currNode2->next;
currNode2->next = currNode1->next;
currNode1->next = temp;
}
Step by step
Solved in 2 steps with 4 images