首頁  >  文章  >  後端開發  >  在C++中遞歸插入和遍歷鍊錶

在C++中遞歸插入和遍歷鍊錶

PHPz
PHPz轉載
2023-09-10 09:21:13912瀏覽

在C++中遞歸插入和遍歷鍊錶

我們得到了用來形成鍊錶的整數值。任務是使用遞歸方法先插入然後遍歷單鍊錶。

在最後遞歸加入節點

  • 如果head 為NULL → 將節點加入head

  • ##否則加入head( head → next )

遞歸遍歷節點

  • 如果head 為NULL → 退出

  • 否則印出( head → next )

範例

#輸入− 1 - 2 - 7 - 9 - 10

#輸出

輸出 strong>− 鍊錶:1 → 2 → 7 → 9 → 10 → NULL

輸入− 12 - 21 - 17 - 94 - 18

輸出− 鍊錶:12 → 21 → 17 → 94 → 18 → NULL

下面程式中所使用的方法如下

#在這種方法中,我們將使用函數新增節點並遍歷單鍊錶並遞歸呼叫它們以進行下一個輸入。

  • 採用帶有整數和下一個指標 SLLNode* 的結構體 SLLNode 。

  • 函數 addtoEnd(SLLNode* head, int data) 取得指向鍊錶頭的指標和資料部分的整數,並將節點加入到鍊錶的末端。

    li>
  • 如果頭指標為 NULL,則清單為空,現在新增一個節點並將其設為頭。將 head → next 加為 NULL。傳回指向該節點的指標

  • 如果 head 不為 null,則使用 head->next = addtoEnd(head->next, data) 將節點新增至 head → next。

  • 函數 traverseList(SLLNode* head) 從 head 開始遍歷並列印每個值。

  • 如果head 為NULL,則列印NULL 並傳回.

  • 否則列印資料值並使用traverseList(head->next) 遍歷下一個。

  • 在主建立清單中使用addtoEnd() 並使用 traverseList() 列印清單。

範例

#include <bits/stdc++.h>
using namespace std;
struct SLLNode {
   int data;
   SLLNode* next;
};
SLLNode* addtoEnd(SLLNode* head, int data){
   if (head == NULL){
      SLLNode *nodex = new SLLNode;
      nodex->data = data;
      nodex->next = NULL;
      return nodex;
   }
   else{
      head->next = addtoEnd(head->next, data);
    }
   return head;
}
void traverseList(SLLNode* head){
   if (head == NULL){
      cout <<"NULL";
      return;
   }
   cout << head->data << " -> ";
   traverseList(head->next);
}
int main(){
   SLLNode* head1 = NULL;
   head1 = addtoEnd(head1, 1);
   head1 = addtoEnd(head1, 8);
   head1 = addtoEnd(head1, 56);
   head1 = addtoEnd(head1, 12);
   head1 = addtoEnd(head1, 34);
   cout<<"Linked List is :"<<endl;
   traverseList(head1);
   return 0;
}

輸出

如果我們執行上述程式碼,將會產生以下輸出

Linked List is :
1 -> 8 -> 56 -> 12 -> 34 -> NULL

#

以上是在C++中遞歸插入和遍歷鍊錶的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除