-1
我試圖編寫一個函數,該函數需要一個指向頭節點的指針,然後使用遞歸來反轉節點之間的鏈接方式。訪問衝突寫入位置C++鏈接列表
下面是我的功能。
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++,我得到這些訪問衝突寫入位置「的錯誤很多,而且到現在爲止,我不知道它是什麼(我一般用的代碼修補,直到它得到固定,但我從來沒有真正的站在是什麼原因造成的)。
抱歉,這真的是一個新手問題,這些訪問衝突寫入位置錯誤是什麼?我的代碼有什麼問題?
嘗試調試'reverseRec'函數。它不會做你期望的事情,因爲它不會改變'頭部'。首先列出兩個項目,以便更容易理解正在發生的事情。 – wimh 2014-11-03 11:59:45
@Wimmel爲什麼?我通過參考通過了嗎?或者算法錯誤? – Rei 2014-11-03 12:28:26
你在'temp = head'之後做'head = temp',這樣就不會改變'head'。在if語句之後,您不會更改'head'。所以它在任何地方都不會改變。 – wimh 2014-11-03 12:48:38