摘要:
顺序表是线性表除了链表的另外一种形式,底层是以数组实现,功能类似于STL中的vector 顺序表支持随机查找,查找的时间复杂度是O(1),但是由于删除和插入操作都要涉及到数据的整体移动,因此删除和插入操作的平均时间复杂度也是O(n)级别的,对于需要频繁查找的情景顺序表更好用,对于需要频繁插入删除的情 阅读全文
摘要:
双向循环链表类似于双链表,但是在实现上有不同: 双向循环链表没有头尾哨兵节点,因此在插入/删除链表时必须考虑特殊情况:往空表中插入第一个元素和删除表中最后一个元素,另外还需要注意的是,如果插入/删除的是表中的第一个元素,将会改变起始指针begin的位置,造成起始指针的左移或者右移,这也是一种特殊情况 阅读全文
摘要:
1.把双链表这种数据结构的更高一级别抽象(线性表)单独写成一个抽象类,然后用于双链表类的继承,这种写法可以规范双链表应该有的接口/操作 2.把节点定义为类内的结构体而不是单独的代码显得更加简洁。 3.在双链表的插入/删除/查找操作中都要找到指向第i个节点的指针,把这个操作统一定义为一个私有的辅助函数 阅读全文
摘要:
单链表为链表的一种,链表和顺序表又同属于线性表,在正式写单链表之前,可以先定义一个线性表抽象类,用来规范所有线性表共同的操作 #include <iostream> using namespace std; // 线性表:顺序表和链表共同的抽象类 template<typename elemType 阅读全文