Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm một bộ ba từ ba danh sách được liên kết với tổng bằng một số nhất định trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm bộ ba trong danh sách được liên kết có tổng bằng số đã cho.

Hãy xem các bước để giải quyết vấn đề.

  • Tạo một nút cấu trúc cho danh sách được liên kết.

  • Tạo danh sách được liên kết với dữ liệu giả.

  • Viết ba vòng lặp bên trong cho ba phần tử lặp lại cho đến cuối danh sách được liên kết.

    • Thêm ba yếu tố.

    • So sánh tổng với số đã cho.

    • Nếu cả hai đều bằng nhau, thì in các phần tử và ngắt các vòng lặp.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
class Node {
   public:
   int data;
   Node* next;
};
void insertNewNode(Node** head_ref, int new_data) {
   Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   *head_ref = new_node;
}
void findTriplet(Node *head_one, Node *head_two, Node *head_three, int givenNumber) {
   bool is_triplet_found = false;
   Node *a = head_one;
   while (a != NULL) {
      Node *b = head_two;
      while (b != NULL) {
         Node *c = head_three;
         while (c != NULL) {
            int sum = a->data + b->data + c->data;
            if (sum == givenNumber) {
               cout << a->data << " " << b->data << " " << c->data << endl;
               is_triplet_found = true;
               break;
            }
            c = c->next;
         }
         if (is_triplet_found) {
            break;
         }
         b = b->next;
      }
      if (is_triplet_found) {
         break;
      }
      a = a->next;
   }
   if (!is_triplet_found) {
      cout << "No triplet found" << endl;
   }
}
int main() {
   Node* head_one = NULL;
   Node* head_two = NULL;
   Node* head_three = NULL;
   insertNewNode (&head_one, 4);
   insertNewNode (&head_one, 3);
   insertNewNode (&head_one, 2);
   insertNewNode (&head_one, 1);
   insertNewNode (&head_two, 4);
   insertNewNode (&head_two, 3);
   insertNewNode (&head_two, 2);
   insertNewNode (&head_two, 1);
   insertNewNode (&head_three, 1);
   insertNewNode (&head_three, 2);
   insertNewNode (&head_three, 3);
   insertNewNode (&head_three, 4);
   findTriplet(head_one, head_two, head_three, 9);
   findTriplet(head_one, head_two, head_three, 100);
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

1 4 4
No triplet found

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.