


Cari nod ke-n daripada senarai pautan terakhir dalam C++ menggunakan kaedah rekursif
Diberi senarai terpaut tunggal dan integer positif N sebagai input. Matlamatnya adalah untuk mencari nod N dari penghujung senarai yang diberikan menggunakan rekursi. Jika senarai input mempunyai nod a → b → c → d → e → f dan N ialah 4, maka nod ke-4 dari yang terakhir ialah c.
Kami akan mula-mula merentasi sehingga nod terakhir dalam senarai dan apabila kembali daripada kiraan kenaikan rekursif (backtracking). Apabila kiraan sama dengan N, penunjuk ke nod semasa dikembalikan sebagai hasilnya.
Mari kita lihat pelbagai senario input dan output ini -
Input- Senarai: - 1 → 5 → 7 → 12 → 2 → 96 → 33 N=3
Keluaran ke bawah Terangkan
sebagai: 2− Nod ketiga ialah 2.
Input− Senarai: - 12 → 53 → 8 → 19 → 20 →96 → 33 N=8 p>
Output- Nod tidak wujud. . senarai menggunakan rekursi, Semasa menjejak ke belakang kami akan menambah pembolehubah kiraan statik. Setelah kiraan sama dengan input N, penunjuk nod semasa dikembalikan.
Ambil Nod struct dengan bahagian data int dan gunakan Node sebagai penuding seterusnya.
Menggunakan struktur Nod dan bahagian data int. p>
- Fungsi addtohead(nod** head, int data) digunakan untuk menambah nod pada head dan membuat senarai terpaut sehala.
- Gunakan fungsi di atas untuk mencipta senarai terpaut sehala dengan kepala sebagai penunjuk ke nod pertama.
Paparan fungsi(kepala Nod*) digunakan untuk mencetak senarai terpaut dari awal
- Ambil N sebagai integer positif.
Fungsi findNode(nod* kepala, int n1) mendapatkan penuding ke kepala dan n1, dan mencetak hasilnya apabila nod n1 dari yang terakhir ditemui.
Ambil letupan sebagai penunjuk ke nod n1 dari yang terakhir.
Panggil searchNthLast(kepala, n1, &last) untuk mencari nod.
Fungsi searchNthLast(nod* head, int n1, Node** nlast) mengembalikan penuding ke nod terakhir n1 dari penghujung dalam senarai terpaut, dengan kepala menjadi nod pertama.
Gunakan pembolehubah kiraan statik.
Jika kepala NULL, tiada apa yang dikembalikan.
Ambil tmp=head->seterusnya.
- Panggil searchNthLast(tmp, n1, nlast) untuk melintasi secara rekursif sehingga nod terakhir. Selepas
kiraan meningkat sebanyak 1.
Jika kiraan menjadi sama dengan n1 maka tetapkan *nlast=kepala.
Akhir sekali cetak nilai nod yang ditunjuk oleh nlast sebagai hasilnya.
-
Contoh
#include <bits/stdc++.h> using namespace std; struct Node { int data; Node* next; }; void addtohead(Node** head, int data){ Node* nodex = new Node; nodex->data = data; nodex->next = (*head); (*head) = nodex; } void searchNthLast(Node* head, int n1, Node** nlast){ static int count=0; if (head==NULL){ return; } Node* tmp=head->next; searchNthLast(tmp, n1, nlast); count = count + 1; if (count == n1){ *nlast = head; } } void findNode(Node* head, int n1){ Node* nlast = NULL; searchNthLast(head, n1, &nlast); if (nlast == NULL){ cout << "Node does not exists"; } else{ cout << "Nth Node from the last is: "<< nlast->data; } } void display(Node* head){ Node* curr = head; if (curr != NULL){ cout<<curr->data<<" "; display(curr->next); } } int main(){ Node* head = NULL; addtohead(&head, 20); addtohead(&head, 12); addtohead(&head, 15); addtohead(&head, 8); addtohead(&head, 10); addtohead(&head, 4); addtohead(&head, 5); int N = 2; cout<<"Linked list is :"<<endl; display(head); cout<<endl; findNode(head, N); return 0; }
Salin selepas log masukOutput Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut
Linked list is : 5 4 10 8 15 12 20 Nth Node from the last is: 12
Salin selepas log masuk
Atas ialah kandungan terperinci Cari nod ke-n daripada senarai pautan terakhir dalam C++ menggunakan kaedah rekursif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Diberi senarai terpaut tunggal dan integer positif N sebagai input. Matlamatnya adalah untuk mencari nod N dari penghujung senarai yang diberikan menggunakan rekursi. Jika senarai input mempunyai nod a→b→c→d→e→f dan N ialah 4, maka nod ke-4 dari yang terakhir ialah c. Kita akan mula-mula melintasi sehingga nod terakhir dalam senarai dan apabila kembali daripada kiraan kenaikan rekursif (backtracking). Apabila kiraan sama dengan N, penunjuk ke nod semasa dikembalikan sebagai hasilnya. Mari kita lihat pelbagai senario input dan output untuk ini - Input - Senarai: -1→5→7→12→2→96→33N=3 Output − Nod Nth dari yang terakhir ialah: 2 Penjelasan − Nod ketiga ialah 2 . Input − Senarai: -12→53→8→19→20→96→33N=8 Output – Nod tidak wujud

Perwakilan senarai terpaut bagi nombor disediakan seperti ini: Semua nod senarai terpaut dianggap sebagai satu digit nombor. Nod menyimpan nombor supaya elemen pertama senarai terpaut memegang digit paling ketara bagi nombor itu, dan elemen terakhir senarai terpaut memegang digit nombor paling ketara. Sebagai contoh, nombor 202345 diwakili dalam senarai terpaut sebagai (2->0->2->3->4->5). Untuk menambah 1 pada senarai terpaut ini yang mewakili nombor, kita mesti menyemak nilai bit paling tidak ketara dalam senarai. Jika kurang daripada 9 tidak mengapa, jika tidak kod akan menukar nombor seterusnya dan seterusnya. Sekarang mari kita lihat contoh untuk memahami cara melakukan ini, 1999 diwakili sebagai (1->9->9->9) dan menambah 1 harus mengubahnya

Perbandingan kerumitan masa algoritma tatasusunan dan senarai terpaut: mengakses tatasusunan O(1), senarai terpaut O(n), senarai terpaut O(1)/O(n); ), senarai terpaut O(n) (n); tatasusunan carian O(n), senarai terpaut O(n).

Gambaran Keseluruhan Perpustakaan Struktur Data PHPSPL Pustaka struktur data PHPSPL (Perpustakaan Standard PHP) mengandungi satu set kelas dan antara muka untuk menyimpan dan memanipulasi pelbagai struktur data. Struktur data ini termasuk tatasusunan, senarai terpaut, tindanan, baris gilir dan set, setiap satunya menyediakan set kaedah dan sifat khusus untuk memanipulasi data. Tatasusunan Dalam PHP, tatasusunan ialah koleksi tertib yang menyimpan jujukan elemen. Kelas tatasusunan SPL menyediakan fungsi yang dipertingkatkan untuk tatasusunan PHP asli, termasuk pengisihan, penapisan dan pemetaan. Berikut ialah contoh menggunakan kelas tatasusunan SPL: useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

Senarai terpaut ialah struktur data yang menggunakan satu siri nod dengan data dan penunjuk untuk menyusun elemen, dan amat sesuai untuk memproses set data yang besar dan operasi sisipan/pemadaman yang kerap. Komponen asasnya termasuk nod (data dan penunjuk ke nod seterusnya) dan nod kepala (menunjuk ke nod pertama dalam senarai terpaut). Operasi senarai terpaut biasa termasuk: penambahan (sisipan ekor), pemadaman (nilai khusus) dan traversal.

Dalam Python, senarai terpaut ialah struktur data linear yang terdiri daripada jujukan nod, setiap nod mengandungi nilai dan rujukan kepada nod seterusnya dalam senarai terpaut. Dalam artikel ini, kita akan membincangkan cara menambah elemen pada kedudukan pertama dan terakhir senarai terpaut dalam Python. LinkedList inPython Senarai terpaut ialah struktur data rujukan yang digunakan untuk menyimpan set elemen. Ia serupa dengan tatasusunan dalam satu cara, tetapi dalam tatasusunan, data disimpan di lokasi memori bersebelahan, manakala dalam senarai terpaut, data tidak tertakluk kepada syarat ini. Ini bermakna data tidak disimpan secara berurutan tetapi secara rawak dalam ingatan. Ini menimbulkan satu soalan iaitu, bagaimana caranya

LinkedList ialah struktur data biasa, yang terdiri daripada satu siri nod Setiap nod mengandungi dua atribut utama: medan data (Data) dan medan penunjuk (Seterusnya). Antaranya, medan data digunakan untuk menyimpan data sebenar, dan medan penunjuk menghala ke nod seterusnya. Dengan cara ini, senarai terpaut menyimpan data dalam cara yang fleksibel yang sesuai untuk banyak senario aplikasi yang berbeza. Dalam bahasa Go, struktur senarai terpaut juga disokong dengan baik. Cont disediakan dalam perpustakaan standard terbina dalam Go

Kaedah untuk melaksanakan senarai terpaut: 1. Tentukan struktur Nod untuk mewakili nod senarai terpaut Setiap nod mengandungi item data dan penunjuk ke nod seterusnya 2. Tentukan struktur LinkedList untuk mewakili senarai terpaut itu sendiri Mengandungi penunjuk ke nod kepala senarai terpaut; cara, struktur dan penunjuk bahasa Go boleh digunakan Untuk melaksanakan fungsi asas senarai terpaut.
