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

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

PHPz
發布: 2023-09-10 09:21:13
轉載
942 人瀏覽過

在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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板