Rumah >pembangunan bahagian belakang >C++ >Cari elemen dalam senarai terpaut dua kali ganda dalam C++
Memandangkan senarai terpaut dua kali ganda dan kata kunci, kami perlu mencari senarai terpaut untuk kata kunci dan memberikan mesej yang sesuai apabila ditemui. Katakan kita mempunyai senarai terpaut dengan watak tertentu dan kita perlu mencari elemen di dalamnya. Jadi mari kita mulakan dengan senarai terpaut di bawah -
5 8 2
Kami akan menggunakan 4 sebagai kunci untuk mencari penyelesaian kepada masalah yang diberikan. Senarai terpaut berganda tidak mempunyai kepala tetap, jadi kami akan bermula pada nod sewenang-wenangnya dan menandakan nod itu sebagai kepala sehingga kami menemui kepala semula, di mana kami melakukan carian linear senarai terpaut dan mencari kata kunci.
Mari kita lihat beberapa senario input dan output -
Andaikan kita mempunyai senarai terpaut pekeliling dua hala dengan 5 nod 4 6 didapati Ia 6.
Input = <-> 3 <-> 4<-> 5<-> 6<-> 7<-> key=6 Output = Element foundMari kita pertimbangkan satu lagi kes di mana tiada unsur untuk dicari dalam senarai pautan dua bulatan.
Input = <-> 10<->20<->30<->40<->50<-> key=100 Output = Element not foundAlgoritma
#include <iostream> #include <vector> using namespace std; class Node { public: int val; Node *left, *right; Node(int val) { this->val = val; } }; bool solve(Node* root, int key) { Node* copy = root; do { if(copy->val == key) return true; copy = copy->right; }while(copy!=root); return false; } int main() { // assigning the forward node in each node of the linked list Node* phead = new Node(5); phead->right = new Node(8); phead->right->right = new Node(9); phead->right->right->right = new Node(2); phead->right->right->right->right = new Node(4); phead->right->right->right->right->right = phead; // assignment of the previous node in each node in the linked list // assigning the previous of the head to the last element phead->left = phead->right->right->right->right; // assigning the left node in each node of the linked list phead->right->left = phead; phead->right->right->left = phead->right; phead->right->right->right->left = phead->right->right; phead->right->right->right->right->left = phead->right->right->right; if(solve(phead, 4)) cout << "Element present"; else cout << "Element not present"; return 0; }Output
Element presentTerjemahan bahasa Cina bagi
Kesimpulan
Atas ialah kandungan terperinci Cari elemen dalam senarai terpaut dua kali ganda dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!