【发布时间】:2015-02-15 06:56:41
【问题描述】:
所以我有一个链表,我试图在添加新节点时反向创建链表。所以我的链表包含两条数据和一个指向下一个对象的指针。当我添加一个新节点时,我希望该节点指向当前的链表。我试过这样做,以便将当前列表的下一个指针指向当前链接列表,然后更改当前链接列表中的数据,但我无法让它工作。
下面是我的代码和我尝试过的。它只是给了我一个指向自身的循环链表。
struct Node {
void *data;
int value;
struct Node *next;
};
struct Node *list;
void create() {
list = malloc(sizeof(struct Node));
}
void add(*data, int value){
if (list->value != 0){
list->next = list;
}
list->data = mem_address /* memory address of some item */;
list->value = value;
}
所以第一个节点被正确添加,但是一旦我添加了第二个节点,它只是一个链接列表,其 next 的值指向自身,本质上是一个循环链接列表。谁能帮帮我。
这里有一个例子让它更清楚一点。
create();
add(pointer, 12);
add(pointer2, 22);
所以它看起来像这样;
+-------+----------------+ | Data | 0x7fecfbd4103c | +-------+----------------+ | value | 22 | +-------+----------------+ | next | | +-------+----------------+ +-------+----------------+ | Data | 0x7fdb9904a03c | +-------+----------------+ | value | 12 | +-------+----------------+ | next | NULL | +-------+----------------+
【问题讨论】:
标签: c linked-list