


Balikkan kumpulan senarai pautan berganda mengikut saiz yang diberikan menggunakan C++
Dalam masalah ini, kita mendapat penunjuk ke kepala senarai terpaut dan integer k. Dalam kumpulan saiz k, kita perlu membalikkan senarai terpaut. Contohnya -
Input : 1 <-> 2 <-> 3 <-> 4 <-> 5 (doubly linked list), k = 3 Output : 3 <-> 2 <-> 1 <-> 5 <-> 4
Kaedah untuk mencari penyelesaian
Dalam masalah ini kita akan merumuskan algoritma rekursif untuk menyelesaikan masalah ini. Dalam kaedah ini kita akan menggunakan rekursi dan menyelesaikan masalah menggunakan rekursi.
Contoh
#include <iostream> using namespace std; struct Node { int data; Node *next, *prev; }; // push function to push a node into the list Node* push(Node* head, int data) { Node* new_node = new Node(); new_node->data = data; new_node->next = NULL; Node* TMP = head; if (head == NULL) { new_node->prev = NULL; head = new_node; return head; } while (TMP->next != NULL) { // going to the last node TMP = TMP->next; } TMP->next = new_node; new_node->prev = TMP; return head; // return pointer to head } // function to print given list void printDLL(Node* head) { while (head != NULL) { cout << head->data << " "; head = head->next; } cout << endl; } Node* revK(Node* head, int k) { if (!head) return NULL; head->prev = NULL; Node *TMP, *CURRENT = head, *newHead; int count = 0; while (CURRENT != NULL && count < k) { // while our count is less than k we simply reverse the nodes. newHead = CURRENT; TMP = CURRENT->prev; CURRENT->prev = CURRENT->next; CURRENT->next = TMP; CURRENT = CURRENT->prev; count++; } if (count >= k) { head->next = revK(CURRENT, k); // now when if the count is greater or equal //to k we connect first head to next head } return newHead; } int main() { Node* head; for (int i = 1; i <= 5; i++) { head = push(head, i); } cout << "Original List : "; printDLL(head); cout << "\nModified List : "; int k = 3; head = revK(head, k); printDLL(head); }
Output
Original List : 1 2 3 4 5 Modified List : 3 2 1 5 4
Penjelasan kod di atas
Dalam kaedah ini, kita melingkari senarai dan mengulang sehingga kiraan kurang daripada k. Kami membuat panggilan rekursif memberikan nilai ke kepala -> seterusnya ( Di sini kami hanya membalikkan senarai semasa melintasi, tetapi apabila k dicapai, kami perlu membuat titik kepala ke elemen kth senarai lain, contohnya jika senarai kami ialah 1 2 3 4 5, k kita ialah 3, kita terbalikkan elemen tengah menjadi 3 2 1, tetapi sekarang kita perlu 1 untuk menunjuk ke 4 kerana elemen itu juga akan diterbalikkan, jadi itulah sebabnya kita menggunakan panggilan rekursif dan membuat tambahan jika kenyataan).
Kesimpulan
Dalam artikel ini, kami menyelesaikan menggunakan Rekursi. Kami juga mempelajari program C++ untuk masalah ini dan pendekatan lengkap kami untuk menyelesaikannya. Kita boleh menulis program yang sama dalam bahasa lain seperti C, java, python dan bahasa lain. Kami berharap artikel ini dapat membantu anda.
Atas ialah kandungan terperinci Balikkan kumpulan senarai pautan berganda mengikut saiz yang diberikan menggunakan C++. 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



Kita semua tahu nombor yang bukan kuasa dua mana-mana nombor, seperti 2, 3, 5, 7, 8, dll. Terdapat N nombor bukan persegi, dan adalah mustahil untuk mengetahui setiap nombor. Jadi, dalam artikel ini, kami akan menerangkan segala-galanya tentang nombor tanpa kuasa dua atau bukan kuasa dua dan cara untuk mencari nombor bukan kuasa dua N dalam C++. Nombor bukan kuasa dua ken Jika nombor ialah kuasa dua integer, maka nombor itu dipanggil kuasa dua sempurna. Beberapa contoh nombor kuasa dua sempurna ialah -1isquareof14issquareof29issquareof316issquareof425issquareof5 Jika nombor bukan kuasa dua mana-mana integer, maka nombor itu dipanggil bukan kuasa dua. Sebagai contoh, 15 nombor bukan kuasa dua yang pertama ialah -2,3,5,6,

Dalam artikel ini, kita akan mempelajari tentang algoritma pembalikan untuk memutar tatasusunan yang diberikan ke kanan dengan elemen k, contohnya −Input:arr[]={4,6,2,6,43,7,3,7}, k= 4Output:{43,7,3,7,4,6,2,6}Penjelasan:Pusingeachelementofarrayby4-elementtotherightmemberi{43,7,3,7,4,6,2,6}.Input:arr[]= {8 ,5,8,2,1,4,9,3},k=3Output:{4,9,3,8,5,8,2,1} Cari penyelesaian

Bulatan ialah rajah tertutup. Semua titik pada bulatan adalah sama jarak dari titik di dalam bulatan. Titik tengah dipanggil pusat bulatan. Jarak dari satu titik ke pusat bulatan dipanggil jejari. Luas ialah perwakilan kuantitatif bagi rentang dimensi bagi rajah tertutup. Luas bulatan ialah kawasan yang tertutup dalam dimensi bulatan. Formula untuk mengira luas bulatan, Luas=π*r*r Untuk mengira luas, kami memberikan jejari bulatan sebagai input, kami akan menggunakan formula untuk mengira luas, algoritma LANGKAH1: Takeradiusasinputfromtheuserusingstdinput.STEP2 : Kirakaluas bulatan, luas=(

Kami memerlukan pengetahuan yang betul untuk mencipta beberapa pasangan unik dalam sintaks tatasusunan C++. Semasa mencari bilangan pasangan unik, kami mengira semua pasangan unik dalam tatasusunan yang diberikan iaitu semua pasangan yang mungkin boleh dibentuk di mana setiap pasangan harus unik. Contohnya -Input:array[]={5,5,9}Output:4Explanation:Thenumberofalluniquepairsare(5,5),(5,9),(9,5)and(9,9).Input:array[] = {5,4,3,2,2}Output:16 Cara Mencari Penyelesaian Terdapat dua cara untuk menyelesaikan masalah ini, iaitu −

Dalam artikel ini, kami akan menggunakan C++ untuk menyelesaikan masalah mencari bilangan subarray yang nilai maksimum dan minimumnya adalah sama. Berikut ialah contoh masalah −Input:array={2,3,6,6,2,4,4,4}Output:12Penjelasan:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}dan{4,4,4}arethesubarraysyang boleh dibentuk denganmaksimumdanminimumelemensama.Input:array={3, 3, 1,5,

Dalam masalah ini, kita diberikan penunjuk kepada kepala senarai terpaut dan integer k. Dalam kumpulan saiz k, kita perlu membalikkan senarai terpaut. Contohnya -Input:1<->2<->3<->4<->5(doublylinkedlist),k=3Output:3<->2<->1<->5<->4 mencari penyelesaian Kaedah Dalam masalah ini, kami akan merumuskan algoritma rekursif untuk menyelesaikan masalah ini. Dalam kaedah ini kita akan menggunakan rekursi dan menyelesaikan masalah menggunakan rekursi. Contoh#include<iostream&

Dalam artikel ini kami akan menerangkan cara untuk mencari hubungan refleksif pada set. Dalam masalah ini, kita diberi nombor n, dan set n nombor asli, dan kita mesti menentukan bilangan hubungan refleksif. Hubungan refleksif - Suatu hubungan R dikatakan sebagai hubungan refleksif pada set A jika bagi setiap 'a' dalam set A, (a, a) tergolong dalam hubungan R. Contohnya -Input:x=1Output:1Explanation:set={1},reflexiverelationsonA*A:{{1}}Input:x=2Output:4Explanation:set={1,2},reflexiverelationsonA*

Dalam masalah yang diberikan, kita mempunyai tatasusunan dan kita perlu memutar tatasusunan dengan elemen d menggunakan algoritma penyongsangan seperti −Input:arr[]=[1,2,3,4,5,6,7], d=2Output: arr[]=[3,4,5,6,7,1,2]Penjelasan:Asyoucanseewehavetorotatethisarraybyd=2butourmaintaskistoiachievethisbyusesingareversaltechnique Kami melakukan beberapa pengiraan pada putaran tatasusunan menggunakan teknik penyongsangan dan membuat kesimpulan: Pertama, kita membalikkan.
