gpt4 book ai didi

c++ - 通过键值的查找函数在 map 中搜索不正确

转载 作者:行者123 更新时间:2023-11-30 05:27:53 26 4
gpt4 key购买 nike

在下面的代码中,我通过键值在 map 中执行搜索,但我无法获得所需的结果,尽管两个列表中都存在公共(public)元素并且使用 map 查找应该会提供预期的输出。使用 map 执行查找时是否有任何问题?这是正确的做法吗?

输入

list1:10->15->4->20list2:10->2->4->8

预期输出:公共(public)->数据=4公共(public)->数据=10

 #include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <map>
using namespace std;
struct node
{
int data;
struct node* next;
};
/* A utility function to insert a node at the beginning of
a linked list*/
void push(struct node** head_ref, int new_data);
/* A utility function to insert a node at the begining of a linked list*/
void push (struct node** head_ref, int new_data)
{
/* allocate node */
struct node* new_node =
(struct node*) malloc(sizeof(struct node));
/* put in the data */
new_node->data = new_data;
/* link the old list off the new node */
new_node->next = (*head_ref);
/* move the head to point to the new node */
(*head_ref) = new_node;
}
/*insert the head1 into map and find the head2 in map*/
int create_hash(struct node* head1,struct node* head2)
{
int flag=0;
map<node*,bool> intersect;

while(head1!=NULL)
{
printf("first_list->data=%d\n",head1->data);
intersect[head1]=true;
head1=head1->next;
}
while(head2!=NULL)
{
printf("second_list->data=%d\n",head2->data);
if (intersect.find(head2)!= intersect.end())
printf("common->data=%d\n",head2->data);
flag=1;
head2=head2->next;
}
if(flag==1)
{
return 0;
}
return -1;
}
/* Drier program to test above function*/
int main()
{
/* Start with the empty list */
struct node* head1 = NULL;
struct node* head2 = NULL;
int ret_val;
struct node* unin = NULL;
/*create a linked lits 10->15->4->20 */
push (&head1, 20);
push (&head1, 4);
push (&head1, 15);
push (&head1, 10);
/*create a linked list 10->2->4->8 */
push (&head2, 10);
push (&head2, 2);
push (&head2, 4);
push (&head2, 8);
ret_val = create_hash (head1, head2);
return 0;
}

最佳答案

您使用第一个列表中的指向节点的指针填充intersect 映射,然后在该映射中搜索指向第二个列表中的节点的指针。由于列表之间不共享节点,因此搜索永远不会成功。

在此实现的上下文中, map 应包含数据值,而不是节点指针。

关于c++ - 通过键值的查找函数在 map 中搜索不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37049569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com