小编Jo *_*Jay的帖子

圆形链表在插入两个后只有一个元素

我试图实现一个循环链表,但它没有像我预期的那样工作.即使我插入两个元素insertAfter,printList只打印一个节点.这是一个最小的例子:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

struct dnode_elm {
    int item;
    struct dnode_elm *next, *prev;
};

struct dnode_elm *
insertAfter(struct dnode_elm *a, int value) {
    struct dnode_elm *v= malloc(sizeof(struct dnode_elm));
    v->item=value;
    a->next=v;
    v->prev=a;
    v->next=a->next;
    a->next->prev=v;
    return v;
}

void
printList(struct dnode_elm *h) {
    while (h != h->next) {
        h = h->next;
        printf("%d --> ",h->item);
    }
}

int
main(void) {
    struct dnode_elm h = { INT_MAX, &h, &h };
    insertAfter(&h, 1);
    insertAfter(&h, 2);
    printList(&h);
}
Run Code Online (Sandbox Code Playgroud)

c linked-list circular-list

1
推荐指数
1
解决办法
166
查看次数

标签 统计

c ×1

circular-list ×1

linked-list ×1