c - 单向链表中 Head 和 tail 指针保持相同的值

标签 c linked-list singly-linked-list

我正在尝试创建一个单向链表,其节点包含两个参数。每当我使用尾指针对另一个节点进行排队时,头指针采用与新节点相同的值。

我确定指针指向相同的内存位置或类似的东西,但我不确定如何解决这个问题。

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/

相关文章:

c - 从 C 中的节点删除特定成员

c++ - 链表拷贝构造函数C++

algorithm - 这里使用了哪种排序算法

c - 在C中单链的后面插入

c - 在 Windows 平台上使用 ANSI-C 可以获得精确到毫秒的系统时间吗?

c - 如何检查图表中的循环?

c - 需要帮助查找 C 程序中的错误(与 char** 复制相关)

c++ - C++ 中的链表使用引用而不是指针

c++ - 遵循奇怪显示模式的单向链表

c++ - LinkedList在C++中只添加两个元素