这是我大学的算法和数据结构课程中的一个问题,具体如下:
编写一个函数(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:ACDF 堆栈 2:BCDEFG 所以它应该返回 3,但它返回 0。
想法?