C++單連結串列遞迴遍歷操作

MaLk3r發表於2018-04-07

型別分析

型別分析要分析的是單連結串列的每個節點存在的狀況
* 空節點

data next
NULL NULL

* 非空節點

data next
例如1 address

單連結串列中一共就只有這麼兩種節點。

演算法夏吉爾分析

如果讓你用迴圈

讓你用迴圈的話,你會怎樣寫呢?

void display(node *head){
    node *p = head;
    while(p){
        cout<<p->data<<"->";
        p = p->next;
    }
}

迴圈變遞迴的分析

迴圈的情況下,你要確定的是改變成遞迴以後
* 函式跳出遞迴的條件是蛤。
* 該怎樣檢視下一個節點的資訊。
* 該什麼時候輸出資訊

只用遞迴

先程式碼

void display(node *head){
    if(!head)//當head為空的時候,肯定是到達了連結串列的尾部,然後跳出,這就是傳說中的basic case
      return ;
    cout<<head->data<<"->";//只要當前節點不為空,那麼肯定能到達這一步然後就會進入下一個節點
    return display(head->next);
}

相關文章