我正在尝试创建一个单向链表,其节点包含两个参数。每当我使用尾指针对另一个节点进行排队时,头指针采用与新节点相同的值。
我确定指针指向相同的内存位置或类似的东西,但我不确定如何解决这个问题。
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;
}
我想使用这个函数来创建一个单向链表,头节点指向列表中的第一个元素,尾节点指向列表中的最后一个元素。当前代码生成的两个变量都表示最后添加的元素。
最佳答案
设置 tail = tail->next
就是将 tail 设置为 null,因为它不是第一次设置,然后在后续调用中立即覆盖 tail 和 head。
关于c - 单向链表中 Head 和 tail 指针保持相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55320455/