void deleteNodeWithData(Node **head, Node* nodeToDelete) {
if (nodeToDelete == NULL || *head == NULL) {
return;
}
if (*head == nodeToDelete) {
*head = nodeToDelete->next;
} else {
Node* current = *head;
while (current != NULL && current->next != nodeToDelete) {
current = current->next;
}
if (current != NULL) {
current->next = nodeToDelete->next;
}
}
free(nodeToDelete);
}
void addToAnotherList(Node *current, Node *targetListHead)
{
if (current == NULL || targetListHead == NULL)
{
return;
}
int data = current->data;
Node *tail = targetListHead;
if (tail == NULL)
{
Node *newNode = new Node;
newNode->data = data;
newNode->next = NULL;
targetListHead = newNode;
return;
}
for (; tail->next; tail = tail->next)
;
Node *newNode = new Node;
newNode->data = data;
newNode->next = NULL;
tail->next = newNode;
}
void insertNode(struct Node** head, int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
struct Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}