返回C++和时间复杂度的线性列表
Returning a Linear List in C++ and Time Complexity
我目前正在为数据结构考试做准备,遇到了一个我可以澄清的问题。我应该创建一个函数 InsertZero(int k, int i),它在元素 i 之后插入 k 个零,每次检查索引并抛出适当的异常。
我已经这样做了,但我坚持如何返回一个线性列表,函数定义要求我在类中这样做。我已经尝试了返回 *元素、返回 &元素和其他一些无济于事。我哪里出错了?
此外,我应该将函数的时间复杂度作为"列表长度和 k 的函数"给出。我分析了整个函数的步骤(请参阅注释)并提出了 O(k)...这不使用列表长度,我对如何做到这一点有点困惑。
任何帮助将不胜感激。我在寻找理解,而不仅仅是答案。
template <class T>
LinearList<T>& LinearList<T>::InsertZero(int i, int k)
{
//Complexity statements are in the form of
// "Number of steps" * "Number of times executed" = total
if ( i<0 || i> (MaxSize-1) || k<0) // 3 * 1 = 3
cout<<"Bad input exception thrown"<<endl;// 1 * 1 = 1
else if (k > (MaxSize-i-1) ) // 1 * 1 = 1
cout<<"NoMem exception thrown"<<endl; // 1 * 1 =1
else
{
while (k!=0) // 1 * k = k
{
element[i+1]=0; // 1 * k = k
i++; // 1 * k = k
k--; // 1 * k = k
}
return &element; // 1 * 1 = 1
}
//Total = 3+1+1+1+k+k+k+k+1 = 4k+7 = O(k)
}
我想element
数组是LinearList
类的数据成员。 element
是基本的C++类型(整数数组),而LinearList
是派生的。我会在你的方法结束时做return *this
。
返回类型看起来与类的类型相同。所以你应该返回*this
.看来elment
应该是一个成员变量,不需要返回它。
相关文章:
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 复制列表初始化的隐式转换的等级是多少
- LNK2038、MSVS2017 MAGMA的原因列表
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 没有为自己的结构调用列表推回方法
- 使用简单类型列表实现的指数编译时间.为什么
- 一对向量构造函数:初始值设定项列表与显式构造
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 通过for循环使用用户输入填充列表
- C++:如何使函数只返回作为列表一部分的字符串
- 概念中的cv限定符需要表达式参数列表
- 计算列表中与线性链接列表中最后一个节点具有相同数据的节点的数量
- 在线性时间内使用邻接列表创建对顶点
- 返回C++和时间复杂度的线性列表
- 排序列表上的线性搜索与未排序列表相比——为什么排序较慢
- 为什么对std::forward_list拼接整个列表或范围是线性的?