Изменил код, ошибок уже нету, но остольные 2 списка не заполняются
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
int A=0;
int B=0;
struct TNode {
int data; // Інформаційний блок
struct TNode *next; // Адресний блок
};
typedef struct TNode Node;
typedef struct TNode NodeP;
typedef struct TNode NodeNP;
void push(Node **head, Node **tail, int data)
{
Node *NewNode = (Node*)malloc(sizeof(Node)); // Покажчик на новий елемент
NodeP *NewNodeP = (NodeP*)malloc(sizeof(NodeP));
NodeNP *NewNodeNP = (NodeP*)malloc(sizeof(NodeNP));
NewNode->data = data; // Інформація
if (data % 2 == 0)
{
if (A != 4)
{
NewNodeP->data= NewNode->data;
}
++A;
}
else
{
if (B != 4)
{
NewNodeNP->data=data;
}
++B;
}
NewNode->next = NULL; // NULL вказує на те, що цей елемент останній
if ((*head) == NULL)//Якщо черга порожня
{
(*head) = (*tail) = NewNode;// Покажчики на голову та кінець черги вказують на 1 елемент
}
else//Якщо черга не порожня
{
(*tail)->next = NewNode;
(*tail) = NewNode;
}
}
void print(Node* head)//Функція для виводу черги на екран
{
printf("\nЧерга\n");
while (head) // Виведення результатів
{
printf("%d\n", head->data);
head = head->next;
}
}
void printp(NodeP* headp)//Функція для виводу черги на екран
{
printf("\nЧерга\n");
while (headp) // Виведення результатів
{
printf("%d\n", headp->data);
headp = headp->next;
}
}
int main()
{
setlocale(LC_ALL, "ukr");
Node *head = NULL; // Покажчик, який вказує на голову черги
Node *tail = NULL; // Покажчик, який вказує на хвіст черги
NodeP *headp = NULL; // парне
NodeP *tailp = NULL;
NodeNP *headnp = NULL; // непарне
NodeNP *tailnp = NULL;
int a, b;
for (int i = 0; i < 20; i++) // Цикл для створення 5 вузлів
{
push(&head, &tail, i + 1); // Функція створення вузла
}
print(head);//Виведення черги на екран
headp->data = head->data;
printp(headp);
print(headnp);
_getch();
return 1;
}