假设我们有两个双向链表。我们必须在两个双向链表中都找到公共节点的总数。因此,如果两个列表像[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
假设我有两个这种格式的数据帧(称它们为和): 我希望获得所有行的数据帧,这些行在和中有一个公共的。(即,如果同时位于和中,则在输出数据帧中包括这两行) 我能想到很多方法来解决这个问题,但它们都让我觉得笨拙。例如,我们可以在每个数据帧中找到所有唯一的s,创建每个数据帧的集合,找到它们的交集,用结果集过滤两个数据帧,并连接两个过滤后的数据帧。 也许这是最好的方法,但我知道熊猫很聪明。有没有更简单的方法
这是我的remove函数,用于删除具有元素的节点。我得到了一个seg错误,我很确定这是因为temp->prev是前面的哨兵,所以从技术上来说,它不在双链表中。如果这是正确的,我实际上如何防止这种情况?如有任何帮助,不胜感激。 编辑:刚刚更新了代码,但仍然出现了Seg错误
双链表节点是在main函数中创建的。Ender和header已定义。在删除节点函数处中断-ender为空。 释放最后一个和第一个输入的内存的最佳方法是什么,即:删除:233,A和888,F?
我试图在我的ArrayList“list1”中找到公共元素 它包含“dateFrom”和“dateTo”之间的所有日期以及我的列表“list2” 其中dateTime是一个变量,它仅存储具有以下结构的文本文件中的日期: 我尝试使用来查找清单2中也在清单1中的所有日期,但我认为我的问题是清单2不是一个ArrayList。我该怎么解决呢?
NowCoder 题目描述 解题思路 设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 当访问链表 A 的指针访问到链表尾部时,令它从链表 B 的头部重新开始访问链表 B;同样地,当访问链表 B 的指针访问到链表尾部时,令它从链表 A 的头部重新开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同
一、题目 输入两个链表,找出它们的第一个公共结点。 二、解题思路 第一种:直接法 在第一个链表上顺序遍历每个结点,每遍历到一个结点的时候,在第二个链表上顺序遍历每个结点。如果在第二个链表上有一个结点和第一个链表上的结点一样,说明两个链表在这个结点上重合,于是就找到了它们的公共结点。如果第一个链表的长度为m,第二个链表的长度为n,显然该方法的时间复杂度是O(mn) 。 第二种:使用栈 所以两个有公共