
数据结构
优秀005
这个作者很懒,什么都没留下…
展开
-
C语言实现通讯录(静态版)
利用c语言结构体、指针、函数等知识实现一个通讯录,具有基本增删改插等功能:原创 2017-03-01 22:18:48 · 897 阅读 · 0 评论 -
快速排序总结
快速排序快速排序是一种经常使用应用最广泛的一种排序算法,它可以算是冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;排序流程为先选取一个key(一般选取最左或最右)将数据分割两部分,再运用递归直到递归到只有一个元素。原创 2017-07-08 14:15:45 · 460 阅读 · 0 评论 -
数据结构之单链表基本功能的实现
单链表的创建,尾插,头插,逆置,删除,销毁等功能原创 2017-02-28 16:42:15 · 1196 阅读 · 0 评论 -
数据结构map与set
map与set基本使用原创 2017-06-28 11:44:18 · 565 阅读 · 0 评论 -
堆知识总结
堆是一种完全二叉树,堆结构的二叉树存储方式分为大堆和小堆。大堆:每个父节点都大于孩子节点小堆:每个父节点都小于孩子节点创建一个大堆:向下调整算法思路:我们知道堆均是完全二叉树,因此一个父节点的子节点即child = parent*2+1;因此在向下调整算法中从根节点开始逐一与它的孩子进行比较,每次保证一棵树最大数据是根节点。例如:int a [] = {10,11, 13, 12, 16, 18,原创 2017-06-03 16:09:00 · 435 阅读 · 0 评论 -
二叉树的三种遍历递归法和非递归法(前序、中序、后续)
二叉树的前序遍历:根->左->右1、递归方法:思路:我们知道递归就是将一个大问题不断分成子问题进行处理,当达到递归终止条件时,跳出。因此在前序遍历中我们把每一个节点分成三部分,即:根节点、左子树、右子树。例如下面这个二叉树递归过程:转化成代码代码:void PrevOrder() //1、递归法 { Node* root = _Root; _PrevOrder(roo原创 2017-05-29 12:51:16 · 608 阅读 · 0 评论 -
队列和栈相关面试题总结
1、实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)??分析: 出栈和入栈根据栈自身提供的接口不难实现,而返回最小值,我们知道遍历一次栈即可找到最小值,但是对栈的操作只能在栈顶,因此,要遍历势必要改变栈的状态,而且还要求时间复杂度为O(1),即更不能遍历栈。我们可以利用两个栈同时进行操作,一个是我们放数据的栈,而另一个栈顶专门放原创 2017-05-23 23:49:51 · 612 阅读 · 0 评论 -
走迷宫问题:回溯法和递归法
问题描述:给一迷宫表个和入口位置,找出并打印出从入口到出口的路径注意:迷宫表格我们可以用一个二维数组来表示,但是如果用二维数组表示,将唯一固定,迷宫趣味性大大降低并代码长度增大;因此,我们最好是将迷宫表格存储在一文件中,在实现时再从文件中读取;采用模板来实现可实现复用性;设计分析:1、我们可沿着入口逐一方向进行试探,若有通则继续前进,全不通,回溯法则回溯,递归法则到达递归终止条件。2、采用栈来记录走原创 2017-05-25 15:44:48 · 4965 阅读 · 0 评论 -
树与二叉树初识
树相关的一些概念。树是n(n>=0)个有限个数据的元素集合,形状像一颗倒过来的树。节点:结点包含数据和指向其它节点的指针。根节点:树第一个结点称为根节点。结点的度:结点拥有的子节点个数。叶节点:没有子节点的节点(度为0)。父子节点:一个节点father指向另一个节点child,则child为孩子节点,father为父亲节点 。兄弟节点:具有相同父节点的节点互原创 2017-05-25 12:13:08 · 426 阅读 · 0 评论 -
模拟实现队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。模拟代码:#include using namespace std;#include templatestruct QueueNode{ T _Data;原创 2017-05-24 11:09:25 · 755 阅读 · 0 评论 -
栈的模拟实现
#include using namespace std;#includetemplateclass Stack{public: Stack() :_arr(NULL) ,_size(0) , _capacity(0) {} void Push(const T& x) { _checkcapacity(); _arr[_size] = x; _size原创 2017-05-23 20:44:22 · 510 阅读 · 0 评论 -
各种排序算法总结
1、【冒泡排序法】 又称交换排序法,即在排序过程中,让较大的元素向下沉,较小的元素向上浮,其处理程序从元素的开始位置起,相邻的元素进行比较,若第i个数大于第i+1个数,则互相交换,比较过所有的元素后,最大的元素将会被排到最后面;重复每一趟均会将最大值放在当前的最后面。void bubble_sort(int* a,int sz){ int i = 0; in原创 2017-07-13 21:37:47 · 307 阅读 · 0 评论