从三个链表中查找一个三元组,其总和等于C ++中的给定数字

在本教程中,我们将编写一个程序,该程序在链表中查找三元组,其总和等于给定的数字。

让我们看看解决问题的步骤。

  • 为链表创建一个struct节点。

  • 用伪数据创建链接列表。

  • 为三个元素编写三个内部循环,这些循环将迭代直到链接列表的末尾。

    • 添加三个元素。

    • 将总和与给定数字进行比较。

    • 如果两者相等,则打印元素并中断循环。

示例

让我们看一下代码。

#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;

}

输出结果

如果运行上面的代码,则将得到以下结果。

1 4 4

No triplet found

结论

以上是 从三个链表中查找一个三元组,其总和等于C ++中的给定数字 的全部内容, 来源链接: utcz.com/z/326174.html

回到顶部