Ответы пользователя по тегу C
  • Как превратить очередь в 2 очереди?

    @nait123321 Автор вопроса
    Изменил код, ошибок уже нету, но остольные 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;
    }
    Ответ написан
    Комментировать
  • Трудноуловимая ошибка в простом коде на Си?

    @nait123321 Автор вопроса
    Нашёл ошибку. В проверке стояла англ: А, а в тексте написано было по рус/укр
    Закрыто
    Ответ написан
  • В чём проблема написания программы?

    @nait123321 Автор вопроса
    Всё, нашёл ошибку
    Ответ написан
    Комментировать