任何人都可以在此程序中发现错误(在 2 个通用堆栈中查找相同元素的数量)
Can anyone discover an error in this program( finding the number of same elements in 2 generic stacks)?
这是我大学算法和数据结构课程中的一个问题,具体如下:
编写一个函数 (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() 不等于零吗?
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 算法问题:查找从堆栈中弹出的所有序列
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 使用堆栈查找每个元素的下一个更大的元素
- 从堆栈跟踪中查找共享库中的源代码行
- 使用 windbg 查找不在堆栈顶部的函数的函数参数
- 从堆栈指针中查找函数参数值
- c++迷宫解算器(查找所有解决方案)堆栈溢出
- 在 stl 堆栈 cpp 中查找元素
- 任何人都可以在此程序中发现错误(在 2 个通用堆栈中查找相同元素的数量)
- 高效查找应用了数据修改堆栈的缓冲区
- 如何查找未初始化的堆栈变量
- 在x64堆栈中查找RUNTIME_FUNCTION的算法
- 程序简单,没有调用堆栈,"inpossible"查找错误
- 在恒定时间内查找堆栈中的最大元素
- 通过使用另一个堆栈查找堆栈中的最大值