在C ++中的两个双链表中查找公共节点数

假设我们有两个双向链表。我们必须在两个双向链表中都找到公共节点的总数。因此,如果两个列表像[15、16、10、9、7、17]和[15、16、40、6、9],则有三个公共节点。

使用两个嵌套循环遍历两个列表,直到列表的末尾,对于列表中的每个节点,检查它是否与第二个列表的任何节点匹配。如果找到匹配项,则增加计数器,最后返回计数。

示例

#include<iostream>

using namespace std;

class Node {

   public:

      int data;

   Node *back, *front;

};

void append(Node** start, int new_data) {

   Node* new_node = new Node;

   new_node->data = new_data;

   new_node->back = NULL;

   new_node->front = (*start);

   if ((*start) != NULL)

      (*start)->back = new_node;

   (*start) = new_node;

}

int countCommonNodes(Node** start1, Node** start2) {

   Node* ptr = *start1;

   Node* ptr1 = *start2;

   int count = 0;

   while (ptr != NULL) {

      while (ptr1 != NULL) {

         if (ptr->data == ptr1->data) {

            count++;

            break;

         }

         ptr1 = ptr1->front;

      }

      ptr1 = *start2;

      ptr = ptr->front;

   }

   return count;

}

int main() {

   Node* first = NULL;

   Node* second = NULL;

   append(&first, 15);

   append(&first, 16);

   append(&first, 10);

   append(&first, 9);

   append(&first, 7);

   append(&first, 17);

   append(&second, 15);

   append(&second, 16);

   append(&second, 40);

   append(&second, 6);

   append(&second, 9);

   cout << "Number of common nodes:" << countCommonNodes(&first, &second);

}

输出结果

Number of common nodes:3

以上是 在C ++中的两个双链表中查找公共节点数 的全部内容, 来源链接: utcz.com/z/343631.html

回到顶部