Rumah > pembangunan bahagian belakang > C++ > Memasukkan dan melintasi senarai terpaut secara rekursif dalam C++

Memasukkan dan melintasi senarai terpaut secara rekursif dalam C++

PHPz
Lepaskan: 2023-09-10 09:21:13
ke hadapan
941 orang telah melayarinya

Memasukkan dan melintasi senarai terpaut secara rekursif dalam C++

Kami mendapat nilai integer yang digunakan untuk membentuk senarai terpaut. Tugasnya adalah untuk memasukkan dahulu dan kemudian melintasi senarai pautan tunggal menggunakan kaedah rekursif.

Tambah nod secara rekursif di penghujung LL → Keluar

  • Jika tidak cetak ( kepala → seterusnya )

  • Contoh

Input

− 1 - 2 - 7 - 9 - 10

  • Contoh

  • Input
  • − 1 - 2 - 7 - 9 - 10

  • Oput

kuat>− Senarai terpaut: 1 → 2 → 7 → 9 → 10 → NULL

Input− 12 - 21 - 17 - 94 - 18

Output− Senarai berpaut: 12 → → → 21 NULL: 12 → → 21 Cara yang digunakan dalam program berikut Seperti berikut

Dalam kaedah ini kita akan menggunakan fungsi untuk menambah nod dan melintasi senarai terpaut tunggal dan memanggilnya secara rekursif untuk input seterusnya.

Mengambil struct SLLNode* dengan integer dan penunjuk seterusnya.

Fungsi addtoEnd(SLLNode* head, int data) Mendapatkan penuding ke kepala senarai terpaut dan integer bahagian data, dan menambah nod pada penghujung senarai terpaut.

    Jika penunjuk kepala adalah NULL, senarai itu kosong, sekarang tambahkan nod baharu dan tetapkannya sebagai kepala. Tambah kepala → seterusnya sebagai NULL. Mengembalikan penuding ke nod
  • Jika kepala bukan nol, gunakan head->next = addtoEnd(head->next, data) untuk menambah nod ke head → next.
  • li>Fungsi traverseList(SLLNode* head) Traverses bermula dari kepala dan mencetak setiap nilai.
  • Jika kepala adalah NULL, cetak NULL dan kembalikan
  • Jika tidak, cetak nilai data dan gunakan traverseList(head->next) untuk melintasi yang seterusnya.
  • Gunakan addtoEnd() dalam senarai ciptaan utama dan gunakan traverseList() untuk mencetak senarai.
  • Contoh
  • #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;
    }
    Salin selepas log masuk

    Output

  • Jika kita menjalankan kod di atas, output berikut akan dihasilkan
  • Linked List is :
    1 -> 8 -> 56 -> 12 -> 34 -> NULL
    Salin selepas log masuk

Atas ialah kandungan terperinci Memasukkan dan melintasi senarai terpaut secara rekursif dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan