• KuangXiang
    置顶
    2023-02-15 来自广东
    每节的完整实现代码看这里:https://gitee.com/jianw_wang/geektime_cpp_dsa/tree/master
    共 1 条评论
    4
  • 徐曙辉
    2023-02-15 来自湖南
    不会C++,写了Go版本,请斧正 https://github.com/xushuhui/algorithm-and-data-structure/blob/master/datastructure/array.go#L35

    作者回复: 不会C++问题不大,根据课程讲的内容,用其他语言实现个8、9成绝无问题,这也是这门课程的一个重要特点—理论知识和文字描述都是为写代码服务的。只要你看懂了理论知识,用其他语言就是可以写出代码。

    
    1
  • Tokamak
    2023-03-20 来自上海
    老师,我现在想把声明放在.h 中, 实现放在 .cpp 中, 但这样就无法运行了,visual studio 是需要进行什么设置吗

    作者回复: 类模板和普通类不一样,一般在头文件中要包含整个类模板的实现体。因为类模板要实例化成具体类,其实现体部分对于其他源文件必须可见。

    
    
  • 阿阳
    2023-02-18 来自江苏
    实现一个时间复杂度为 O(1) 的新的顺序表插入操作: template <typename T> bool SeqList<T>::ListInsert2(int i, const T& e) { // 如果顺序表已经存满了数据,则不允许再插入新数据了 if (m_length >= m_maxsize) { cout << "顺序表已满,不能再进行插入操作了!" << endl; return false; } // 判断插入位置i是否合法,i的合法值应该是1到m_length+1之间 if (i < 1 || i >(m_length + 1)) { cout << "元素" << e << "插入位置" << i << "不合法,合法的位置是1到" << m_length + 1 << "之间!" << endl; return false; } // 将插入位置i原有元素移动到顺序表最后的位置 m_data[m_length] = m_data[i - 1]; m_data[i - 1] = e; cout << "成功在位置为 " << i << " 处插入元素" << m_data[i - 1] << "!" << endl; m_length++; // 实际表长+1 return true; }
    展开

    作者回复: 😂😂

    共 2 条评论
    
  • 徐曙辉
    2023-02-17 来自湖南
    为什么位置不直接用数组索引,在新增、删除、随机访问都增加了一次运算指令,数组是底层数据结构,性能要尽可能优化,运算指令没有必要。另外对调用者如果不看注释或者源码不会明白理解位置+1,不符合默认编程约定,容易被误用造成bug。

    作者回复: 没明白你的疑问,可以提供出代码来一起探讨。

    共 3 条评论
    