我正在尝试创建一个名为frequency的fn,它返回链表中给定整数的频率。 到目前为止:
respond_to do |format|
format.js { render json: { html: render_to_string(partial: '/users/photos/card', object: @photo, as: 'photo') } }
end
但它返回的数字(应返回1)但返回8 我的链表有10个元素(0-9
答案 0 :(得分:1)
等于e的检查应该在for循环的主体中完成。
int IntSLList::frequency(int e)
{
int total = 0;
IntSLLNode *temp;
for (temp = head; temp!=0 ; temp = temp->next)
{
if( temp->info == e )
total++;
}
return total;
}
答案 1 :(得分:1)
这种情况:temp!=0 && !(temp-> info ==e)
会让你算上两件事中的第一件:
e
。这不是您想要的行为,因此您需要调整条件。我们想要什么?
for(IntSLLNode *temp = head; temp; temp = temp->next)
。e
的数字: if (temp->info == e) {
total++;
}
这给了我们最后的循环:
int IntSLList::frequency(int e) {
int total = 0;
for (IntSLLNode *temp = head; temp; temp = temp->next) {
if( temp->info == e ) {
total++;
}
}
return total;
}