STL库vector模拟实现 vector优点动态扩展:vector容器可以根据需要自动扩展其容量,以容纳更多的元素。这使得vector可以避免预先分配固定内存空间的限制,更加灵活和高效。随机访问:vector容器的迭代器支持随机访问,这使得访问元素时具有很高的效率。插入和删除操作的高效性:在尾部插入或删除元素时,vector容器的时间复杂度为O(1),而在头部或中部插入或删除元素时,时间复杂度为线性阶O(n)。这使得vector在处理大量数据时具有很高的效率。支持多种操作:vector容器提供了许多操作
STL库string模拟实现 在C++中,string是一个类模板,定义在头文件中,提供了对字符串的封装和操作。它实现了动态内存分配和复杂的字符串操作下面是一些常用的string类成员函数:构造函数:可以用于创建和初始化string对象,包括默认构造函数、用C字符串或另一个string对象初始化的构造函数等。赋值操作符:可以将另一个string对象、C字符串或字符赋值给当前string对象,包括=、+=、append等操作符。访问和修改字符:可以使用下标运算符[]、at()等访问单个字符,也可以使用insert()、er
C语言实现单链表 SLTNode;//打印//尾插//头插//尾删//尾删//查找//在pos位置之后插入一个节点//在pos元素之前插入一个节点//删除元素为pos的节点//删除pos后一个位置的节点//销毁。
C/C++内存管理详解 既然有了malloc和free,那么new和delete意义何在?对于内置类型,他们的效果是一样的对于自定义类型,malloc只申请空间,失败返回0;new申请空间+调用构造函数初始化,失败抛异常;free只释放空间,delete释放空间+调用析构函数。
C语言实现排序算法 直接插入排序时间复杂度O(N^2),空间复杂度O(1),最好情况是有序或接近有序,最差情况是逆序,有序时比希尔排序更好希尔排序(缩小增量排序,其优化了直接插入排序)中,gap(一般为3)越大,前面大的数据可以越快到后面,后面小的数可以越快到前面。缺点是gap越大越不接近有序,若gap=1等于直接插入排序。希尔排序时间复杂度O(N^1.3~N^2)
数据结构——二叉树(C语言实现) 完全二叉树中节点度为1的最多有1个,没有左孩子就没有右孩子树的结构定义是递归,任何一棵树都可以看成三部分,根和左子树,右子树树不能构成回路或环以及孤立的点二叉树不一定有两个子树,有可能为空满二叉树必须是全满的,完全二叉树前K-1层都是满的,最后一层可以不满,但必须从左到右连续
数据结构——堆(C语言实现) 逻辑结构是完全二叉树,物理结构是数组(其适合用数组存放),堆一定是完全二叉树,大(根)堆中每个父亲都大于等于孩子,(根)堆顶是最大值;小(根)堆中父亲都小于等于孩子,(根)堆顶是最小值;小(大)堆向下或上调整算法要求:调整的树的左右子树都是小(大)堆
数据结构——栈(C语言数组实现) 栈:是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除 操作的一端称为栈顶,另一端称为栈底。栈的性质先进后出,后进先出,这是针对栈内的数据而言的。栈没满也可以出栈
数据结构——双向循环链表(C语言实现) 双向循环链表:结构复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势。