我正在尝试转换带有节点的链表
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指针异常。我不明白为什么会这样,因为我希望当我开始时会出现这种情况。任何建议都会很棒。