Здравствуйте, возникли проблемы с лабой.
Вот задание: Дано указатель Р3 на 3 элемент непустого списка. Продублировать в списке все элементы с парными значениями три раза и вывести 11 элемент преобразованого списка.
Вот мой код:
#include <stdlib.h>
#include <stdio.h>
#define N 10
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;// Вказування на голову списку
}
int main()
{
int t;
Node *head = NULL; // Покажчик, що вказує на голову списку
Node *head1 = NULL; // Покажчик, що вказує на голову списку
Node *p1 = NULL; // Покажчик, що вказує на голову списку
Node *p3 = NULL; // Покажчик, що вказує на голову списку
for (int i = N; i >= 0; i--) // Цикл для створення N вузлів
{
CreateNode(&head, i);
}
head1 = head;
p3 = head;
printf("head=%d\n", head);
printf("head1=%d\n", head1);
printf("p2=%d\n", p3);
for (int l = 0; l < 3;l++)
{
for (int i = 0; i <= N - 1; i++)
{
t = p3;
if (t % 2 == 0)
{
Node *tmp = (Node*)malloc(sizeof(Node));
p3->next = tmp;
tmp->data = p3->data;
tmp->next = NULL;
}
p3 = p3->next;
}
}
while (head1) // Виведення результатів
{
printf("%d\n", head1->data);
head1 = head1->next;
}
_getch();
return 1;
}
Но при запуске получается вот так:
В чем ошибка?