![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++数据结构
文章平均质量分 77
C++数据结构
诺谦
热爱生活 活在当下
展开
-
8.C++ Queue队列类模版实现
1.队列的介绍队列的定义队列(Queue)是一种线性存储结构。它有以下几个特点: 按照"先进先出(FIFO, First-In-First-Out)"方式进出队列。 队列只允许在"队首"进行取出操作(出队列),在"队尾"进行插入操作(入队列)队列实现的方式有两种基于动态数组实现 基于链表形式实现队列需要实现的函数T dequeue() : 出队列,并返回取出的元素void enqueue(const T &t) : 入队列T &head() : 获取.原创 2022-02-25 11:01:11 · 1643 阅读 · 0 评论 -
7.C++ Stack栈类模版实现
1.栈的介绍栈的实现方式分为3种基于静态数组实现,内部预设一个很大的数组对象, 实现简单,缺点是空间受限。 基于动态数组实现,内部预设一个容量值,然后分配一段内存空间数组,如果入栈大于默认容量值时,则再次扩大分配新的内存数组,并将旧数组拷贝至新数组及释放旧数组. 基于双向循环链表实现栈的函数需要实现如下所示:T pop() : 出栈并返回栈顶元素const T & pop() const : 出栈并返回const类型栈顶元素void push(const T &a.原创 2022-02-24 23:12:09 · 2204 阅读 · 0 评论 -
6.C++ 双向循环链表类模版实现
在上章4.C++ 图解单向链表类模板、iterator迭代器类模版实现_抵抗时间扭曲,坚持做一件有意义的事-CSDN博客_链表类模板的实现我们学习了单链表,所以本章来学习双向循环链表我们在上个文章代码上进行修改, 由于双向循环链表在我们之前学的单链表上相对于较为复杂,所以需要注意的细节如下所示.1.插入某个节点流程如下图所示:对应代码如下所示: /*插入一个新的节点*/ bool insert(int i, const T& value) { .原创 2022-02-24 18:09:08 · 1012 阅读 · 0 评论 -
5.C++ 动态数组模版类Vector实现
1.实现机制内部默认分配一定数量大小的数组指针,每次append尾部追加的时候,无需再次分配空间,直接赋值标志length长度,假如超过当前空间容量,则再次扩大分配新的内存数组,并将旧数组拷贝至新数组及释放旧数组.然后resize的时候Vector需要实现的public函数如下所示:inline int capacity() : 获取容量 inline int length() : 获取有效长度 void resize(int asize) : 改变数组的有效长度 void append原创 2022-02-24 14:54:40 · 787 阅读 · 0 评论 -
4.C++ 图解单向链表类模板、iterator迭代器类模版实现
C++ 图解单向链表类模板、iterator迭代器类模版实现原创 2022-02-12 17:27:13 · 1406 阅读 · 0 评论 -
3.C++-对象排序比较
在上章我们学习了2.C++-选择排序、冒泡排序、插入排序、希尔排序、归并排序、快速排序_抵抗时间扭曲,坚持做一件有意义的事-CSDN博客所以本章实现进行对象数组排序1.对象比较介绍在排序中进行交换的前提主要是进行对象间的比较、而常见的排序是对一个数组排序,然后对每个数组内容进行比较与交换、如果是对一个class进行排序,则需要进行关键字成员进行比较,需要重写下面几个操作符:bool operator == (const class& t); // 返回tur...原创 2022-01-12 23:14:14 · 261 阅读 · 0 评论 -
2.C++-选择排序、冒泡排序、插入排序、希尔排序、归并排序、快速排序
1.常用排序算法介绍一个排序算法的好坏需要针对它在某个场景下的时间复杂度和空间复杂度来进行判断、并且排序都需要求其稳定性,比如排序之前a在b前面,且a=b,排序之后也要保持a在b前面、常用排序算法如下所示:2.选择排序首先i等于0,每次i++,并从i轮询到n,选择一个最小者与第i个位置进行交换.比如:16,8,21,10,49第1次遍历整个数组,找到最小值8,则与arr[0]进行交换:8,16,21,10,49第2次遍历下标1~4的数组,找到10,则与arr[1]进原创 2022-01-04 21:41:40 · 6310 阅读 · 27 评论 -
1.C++-算法时间与空间复杂度、常见的线性表介绍
一个算法好坏,需要从它的时间复杂度与空间复杂度得出,所以我们需要学习一下算法的时间复杂度1. 时间复杂度执行效率有快到慢如下所示:O(1): 常数阶,无论输入数据增大多少倍,耗时都不变,都是可预见的, 哈希算法就是典型的O(1)时间复杂度、O(logn): 对数阶(这里的log是以2为底的),当数据增大n倍时,耗时增大logn倍。比如二分查找最坏的情况下的时间复杂度则为O(logn),每找一次排除一半的可能,256个数据最坏情况是8次到目标。 O(n): 线性阶,呈正比例增长,代表数.原创 2021-12-29 17:31:26 · 1159 阅读 · 9 评论