c语言 - 链表光标不会转到下一个节点



我正试图在C中创建一个链表,但我似乎不明白为什么我的光标不会转到下一个节点。我将当前节点设置为下一个节点,但当我打印出光标地址时,它是相同的。我相信这会导致我有一个无限循环,因为这是我的主要问题。我正在设置下一个指针:

orig_cursor = orig_cursor->next;

我的整个方法如下:

struct node* copyList()
{
    if(!head)
        return NULL;
    struct node *head_copy = malloc(sizeof(struct node));
    struct node *copy_cursor = head_copy;
    struct node *orig_cursor = head;
    head_copy->data = head->data;
    head_copy->next = NULL;
    if(orig_cursor->next)
    {
        while(orig_cursor)
        {
            copy_cursor->next = malloc(sizeof(struct node));
            copy_cursor = copy_cursor->next;
            printf("Original cursor pre-traversal = %dn", orig_cursor->next);
            orig_cursor = orig_cursor->next;
            printf("Original cursor post-traversal = %dn", orig_cursor->next);
            copy_cursor->data = orig_cursor->data;
            if(!orig_cursor->next)
            {
                copy_cursor->next = NULL;
                break;
            }
        }
    }
    return head_copy;
}

我还使用以下push()函数将节点推送到列表中:

void push(int data)
{
    if(!head)
    {
        head = malloc(sizeof(struct node));
        head->data = data;
        head->next = NULL;
        return;
    }
    struct node *new_node = malloc(sizeof(struct node));
    new_node->data = data;
    new_node->next = head;
    head = new_node;
}

尝试使用

struct node * new_node = malloc(sizeof(struct node));

相关内容

  • 没有找到相关文章

最新更新