在struct中打印Int打印地址

Dvo*_*ole 0 c

我正在读一本算法书,我发现自己陷入了困境.我创建了一个双向链表,当我尝试打印出它的内容时,它打印出我认为的地址或其他与我想要的无关的值.这是代码:

typedef struct double_element *dElement;
struct double_element
{
    int value;
    dElement prev;
    dElement next;
};

dElement createNewDListWithElements(int count)
{
    dElement element = malloc(sizeof(dElement));

    element->value = 1;
    element->next = NULL;
    element->prev = NULL;

    dElement previous = element;

    for (int i = 1; i < count; i++) {

        dElement el = malloc(sizeof(dElement));

        el->value = i;
        el->next = NULL;
        el->prev = previous;
        previous->next = el;

        previous = el;
    }

    return element;
}

void printDList(dElement node)
{
    printf("printing doubly linked list:\n");

    while (node) {

        printf("%i\n", node->value);

        node = node->next;
    }

    printf("end printing double linked list\n");
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

printing doubly linked list:
1
1070320
1070336
1070352
1070368
1070384
1070400
1070416
1070432
1070448
end printing double linked list
Run Code Online (Sandbox Code Playgroud)

小智 6

您的问题是您正在尝试为a分配空间struct double_element,但您只需要足够的空间来存储空间struct double_element*.