【发布时间】:2020-05-01 13:15:28
【问题描述】:
typedef struct Element
{
int number;
struct Element *right;
struct Element *left;
} Element;
Element *newElement;
Element *head;
Element *pos;
Element *current;
void insert_Element()
{
newElement = malloc(sizeof(Element));
if (head==NULL)
{
head = newElement;
current = newElement;
current->right = pos;
//pos->left = current;
}
}
双链表的头部应该有一个指向下一个 (right) 元素的指针(它是 NULL,但也是 pos)。这工作正常,但来自pos/NULL 的指针返回(left) 不起作用。
我做了什么工作;甚至可能吗?
提前谢谢你:)
【问题讨论】:
-
你在哪里分配
pos? -
无处可去。我不知道你必须这样做。它没有工作。我以为既然我没有分配,那就等于NULL
-
pos->whatever正在取消引用它。你不能取消引用未分配的指针。 -
newElement应该是insert_Element()函数的局部变量。首次创建列表时,需要将head、pos和current设置为新元素。您还需要设置新元素,以便设置其左右指针。通常,您的insert_Element()函数会将值插入到元素中(要存储的数字)。你有太多的全局变量来安慰。尽可能避免使用它们。 -
pos的目标/作用是什么?
标签: c pointers linked-list null