Не получается продублировать элемент односвязного списка
Дано указатель Р1 на первый элемент не пустого списка. Продублировать в списке все элементы с четными значениями и нечетными номерами (Новые элементы добавлять перед существующими элементами с такими же значениями) Я сейчас написал немного кода где я хочу просто попробовать сделать дублирование одного элемента , но при компиляции консоль ничего не выводит . Вообще, я решил сделать просто дублирование после того как не получилось основное задание , хотел просто принцип роботы понять но и в том и в том случае консоль не выводит ничего
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
struct TNode {
int data;
struct TNode *next;
};
typedef struct TNode Node;
void CreateNode(Node** head, int d)
{
Node *tmp = (Node*)malloc(sizeof(Node));
tmp->data = d;
tmp->next = (*head);
(*head) = tmp;
}
void copy(Node** head)
{
Node *tmp;
Node *P1 = (Node*)malloc(sizeof(Node));
tmp = (*head);
while (tmp != NULL)
{
if ((tmp->next->data)%2==0)
{
P1->next = tmp->next;
tmp->next = P1;
P1->data = P1->next->data;
}
tmp = tmp->next;
}
}
int main()
{
setlocale(LC_ALL, "ukr");
Node *head = NULL;
for (int i = 0; i < 3; i++)
{
CreateNode(&head, i + 1);
}
copy(&head);
while (head)
{
printf("%d\n", head->data);
head = head->next;
}
getchar();
return 1;
}