访问冲突写入位置c ++链表

时间:2014-11-03 11:51:10

标签: c++ list recursion

我正在尝试编写一个函数,该函数接受指向头节点的指针,然后反转节点使用递归相互链接的方式。

以下是我的功能。

void reverseRec(digits *&head){
digits *temp = head;
if(temp->next = NULL){
    head = temp;
    return;
  }
reverseRec(head->next);
digits * a = temp->next;
a->next = temp;
temp->next = NULL;
}

并且函数调用如下:

int main(){
    digits * head = new digits(); // pointer that points to head of the node
    head = NULL;
    insert(head, 5, 1); 
    insert(head, 6, 2);
    insert(head, 1, 3);
    insert(head, 7, 1);
    delList(head, 1);
    reverseRec(head);
}

如果有帮助,我尝试使用一个正常的反向函数使用while循环,它变得很好,我的代码是这样的:

void reverse(digits *&head){
    digits * prev, * current, * next;
    current = head;
    prev = NULL;
    while(current!= NULL){
        next = current->next;
        current->next = prev;
        prev = current;
        current = next;
    }
    head = prev;
}

我是C ++的新手,我得到了很多“访问违规写入位置”错误,直到现在我还不知道它是什么(我通常会修改代码,直到它被修复,但我从来没有真的明白是什么原因造成的)。

抱歉,这真的是一个新手问题,这些访问违规写入位置错误是什么?我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

当您尝试写入或读取未授权给您的程序的内存区域时,会发生访问冲突错误。您能否提一下您在哪里获得此访问冲突错误?

IF()条件下,您实际上是等式Temp->在NULL旁边。你可以尝试改变..

if(temp->next = NULL)

if(!temp->next)

在主()中,改变你的头部作业。

head ->next= NULL;