这是我大学算法和数据结构课程中的一个问题,具体如下:
编写一个函数 (presjek),它接收 2 个泛型堆栈并找到它们中相同的元素数量,并返回它。
我已经知道这个微不足道的解决方案,所以这是不可能的。
这是我的代码:
int presjek(NizStek<T> s1, NizStek<T> s2){
int br = 0;
while(true){
if( s1.vrh() < s2.vrh()) {s1.skini(); }
else if(s1.vrh() > s2.vrh()) {s2.skini(); }
else if( s1.vrh() == s2.vrh()){
br++;
s1.skini();
s2.skini();
}
if((s1.brojElemenata() == 0) || (s2.brojElemenata() == 0)) break;
}
return br;
}
附加信息:函数 VRH 返回堆栈顶部的元素
函数 skini 删除顶部元素
函数 brojElemenata 返回堆栈中的元素数
堆栈作为动态数组实现
我已经在以下示例中对其进行了测试:堆栈 1:A C D F堆栈 2: B C D E F G所以它应该返回 3,但它返回 0。
想法?
首先,我将按以下方式重写函数循环
while ( ( s1.brojElemenata() != 0 ) && ( s2.brojElemenata() != 0 ) )
{
if ( s1.vrh() < s2.vrh() )
{
s1.skini();
}
else if ( s1.vrh() > s2.vrh() )
{
s2.skini();
}
else
{
br++;
s1.skini();
s2.skini();
}
}
至于你的问题,那么你应该检查 NizTek 类的复制构造函数。你确定函数 s1.brojElemenata() 和 s2.brojElemenata() 不等于零吗?