Я пытаюсь создать односвязный список с узлами, содержащими два параметра.Всякий раз, когда я ставлю в очередь другой узел, используя указатель хвоста, указатель заголовка принимает то же значение, что и новый узел.
Я уверен, что указатели указывают на ту же самую область памяти или что-то подобное, но я неконечно, как это исправить.
struct node
{
struct process *p;
struct node *next;
}
struct node* head;
struct node* tail;
void enqueue(struct process* newProcess)
{
struct node *newNode = malloc(sizeof(struct node));
newNode->p = malloc(sizeof(struct process));
newNode->p = newProcess);
if(tail==NULL)
{
head = tail = newNode;
return;
}
tail = tail->next;
tail = newNode;
}
Я хотел бы использовать эту функцию, чтобы иметь возможность создать односвязный список с головным узлом, указывающим на первый элемент в списке, и с хвостовым узлом, указывающим напоследний элемент в списке.В результате выполнения текущего кода обе переменные представляют последний добавленный элемент.