我想知道两个链表之间的相似性我在它们之间得到了一些相同的数据但==运算符无法识别它们可以帮助我吗? v将始终保持为0数据类型为字符串
class node{
string Data;
node *next;
};
float nodelinkedlist::vazn(nodelinkedlist list1,nodelinkedlist list2)
{
float w=0,v=0;
node *temp1=new node;
node *temp2=new node;
temp1->next=list1.first->next;
temp1->Data=list1.first->Data;
temp2->next=list2.first->next;
temp2->Data=list2.first->Data;
while(temp1->next!=NULL)
{
while(temp2->next!=NULL)
{
if((temp1->Data)==(temp2->Data))
v++;
temp2=temp2->next;
}
temp1=temp1->next;
}
w=(v/((linklen(list1)+linklen(list2)-v)));
return w;
}
答案 0 :(得分:-1)
根据使用的库,可能无法实现==运算符。以下是一些参考文献:
http://www.cplusplus.com/reference/string/string/ http://www.cplusplus.com/reference/string/string/compare/
尝试这种比较:
if(temp1->Data.compare(temp2->Data)) == 0)
v++;
如果比较返回 0 ,如果字符串相等,只需记住要区分大小写。
我刚注意到的另一个问题是,当你完成内部循环时,你不会重置temp2节点的值。
class node{
string Data;
node *next;
};
float nodelinkedlist::vazn(nodelinkedlist list1,nodelinkedlist list2)
{
float w=0,v=0;
node *temp1=new node;
node *temp2=new node;
temp1->next=list1.first->next;
temp1->Data=list1.first->Data;
temp2->next=list2.first->next;
temp2->Data=list2.first->Data;
while(temp1->next!=NULL)
{
while(temp2->next!=NULL)
{
if(temp1->Data.compare(temp2->Data)) == 0)
v++;
temp2=temp2->next;
}
temp1=temp1->next;
temp2->next=list2.first->next;
temp2->Data=list2.first->Data;
}
w=(v/((linklen(list1)+linklen(list2)-v)));
return w;
}