将链表转换为双链表空指针

时间:2018-11-22 07:33:02

标签: c nullpointerexception

我正在尝试转换带有节点的链表

struct ListNode {
    int val;
    struct ListNode *next;
};

进入双向链接列表

struct DoubleListNode{
    int val;
    struct ListNode *next;
    struct ListNode *previous;
};
struct DoubleListNode * makeDoubleNode(struct ListNode* currentNode, struct ListNode* previousNode)
{
    struct DoubleListNode aNewNode;
    struct DoubleListNode * p;
    p = &aNewNode;
    aNewNode.val = currentNode->val;
    aNewNode.previous = previousNode;
    aNewNode.next = currentNode->next;
    return p;
}

要创建双向链接列表的开头,我称之为makeDoubleNode(struct ListNode* headOfLinkedList, NULL)。对于每个后续节点,我都用makeDoubleNode(struct ListNode* currentNode, struct ListNode* previousNode)

当我打印出aNewNode val,上一个和下一个的值时,似乎双链表已被很好地创建。

创建双向链表之后,我位于双向链表的末尾,然后从尾到头遍历。

我遇到的问题是,当我到达第二个节点(即回到头节点之前的那个)时,我得到一个NULL指针异常。我不明白为什么会这样,因为我希望当我开始时会出现这种情况。任何建议都会很棒。

0 个答案:

没有答案