数据结构
文章平均质量分 80
csdn_dzh
一些点滴的记录
展开
-
数据结构——1.基本概念
1、例子1写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数循环实现递归实现测试时间有一个问题,应该怎么跑这个程序呢?让这里面的N从100,1000,10000…一直往下跑可以写一个测试代码,先读进来一个N,然后以N为参数去调用这个PrintN函数2、例子2写程序计算给定多项式在给定点x处的值分析知函数的参数需ixh要存储多项...原创 2018-10-26 10:02:12 · 642 阅读 · 0 评论 -
数据结构与算法面试知识点汇总(超全)
文章目录哈希函数和哈希表哈希函数哈希表哈希函数和哈希表哈希函数哈希函数(散列函数):类似于函数调用一样,给一个字符串作为输入,返回一个哈希码性质:1)输入域是无穷大的2)输出域是有穷的,输出域要比输入域小3)哈希函数不是一个随机函数,只要输入一样,输出就一样4)输入域这么大而输出域这么小,而由于特性3的关系,就会导致输入不一样也有可能得到输出一样的值(哈希碰撞)5)虽然有哈希...原创 2019-01-31 20:05:17 · 12933 阅读 · 0 评论 -
C++数组实现栈和循环队列,栈和队列的相互转化
队列声明方法实现核心部分是当队头或队尾来到最后一个位置时,让它们变为0,这个时候就不用考虑复杂的边界了测试结果及代码#include <iostream>#include <stdlib.h>#include <vector原创 2019-01-18 22:18:44 · 880 阅读 · 0 评论 -
图解平衡二叉树(AVL树)代码实现
平衡二叉树的概念对于二叉树进行查找的时间复杂度是由查找过程中的比较次数来衡量的比较是从根结点到叶节点的路径进行的,取决于树的深度,树深在最好的情况下是O(logN)当二叉树退化成一棵单枝树的情况下,查找的复杂度将是线性的O(N)假定二叉搜索树中每个结点的查找概率都是相同的,就称查找所有结点的比较次数的平均值为“平均查找长度ASL”其中ASL = (∑深度k*该层的结点数)/总的结点...原创 2018-12-07 20:46:30 · 1122 阅读 · 0 评论 -
二叉搜索树代码实现——查找、插入和删除
二叉搜索树的基本性质二叉搜索树是一棵二叉树,可以为空,如果不为空,有如下的性质(1)非空左子树的所有键值小于其根结点的键值(2)非空右子树的所有键值大于其根结点的键值(3)左右子树都是二叉搜索树基本子函数1)树的节点定义2)创建二叉搜索树3)二叉搜索树关键字的查找(递归与非递归)基本思想:如果元素的值大于要查找的值,就到左子树中查找如果元素的值小于要查找的...原创 2018-11-23 10:25:47 · 3822 阅读 · 1 评论 -
二叉树代码实现——创建、先序,中序和后序遍历(递归和非递归方式),层序遍历及有关的特性
基本子函数1)树的节点定义2)创建二叉树3)二叉树的递归遍历3.1 先序遍历(根->左子树->右子树)3.2 中序遍历(左子树->根->右子树)3.3 后序遍历(左子树->根->右子树)4)二叉树的非递归遍历原创 2018-11-22 19:44:15 · 1238 阅读 · 0 评论 -
数据结构——3.3 二叉树的遍历及树的同构
一、二叉树的遍历1、先序遍历遍历过程为:1)访问根结点2)先序遍历其左子树3)先序遍历其右子树这样的一种遍历过程,其实也是一种递归的思想。A(BDFE)(CGHI),先序遍历=> ABDFECGHI2、中序遍历遍历过程为:1)中序遍历其左子树2)访问根结点3)中序遍历其右子树对根结点A来讲,BDFE是左边,CGIH是右边,所以中序遍历的整个过程是先要把左边的给p...原创 2018-11-04 22:52:39 · 345 阅读 · 0 评论 -
数据结构——3.2 二叉树及存储结构
一、二叉树的定义二叉树T:一个有穷的结点集合,这个集合可以为空;若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。1)二叉树的五种基本形态2)二叉树的子树有左右顺序之分3)特殊的二叉树斜二叉树:只往一边倒,只有左儿子,没有右儿子或只有右儿子没有左二子。相当于链表,形成了一个线性结构完美二叉树、满二叉树:除了最底层的结点以外,每个结点都有两个儿...原创 2018-11-04 17:28:57 · 401 阅读 · 0 评论 -
数据结构——3.1树与树的表示
一、引言层次结构举例家谱、城市(乡镇),文件管理系统等为什么用层次结构呢?分层次组织在管理上具有更高的效率查找静态查找:对查找的集合没有插入和删除操作,只有查找动态查找:对查找的集合除查找外,还可能发生插入和删除二分查找的启示例如11个元素的二分查找判定树1)判定树上每个结点需要的查找次数刚好是该结点所在的层数2)查找成功时查找次数不会超过判定树的深度3)n个结点的判定...原创 2018-11-04 10:56:17 · 347 阅读 · 0 评论 -
数据结构——2.4应用实例之多项式
一、多项式加法运算那么,在计算机中是如何实现的呢?采用不带头结点的单向链表,按照指数递减的顺序排列各项算法思路两个指针p1和p2分别指向这两个多项式第一个结点,不断循环:p1->expon == p2->expon : 系数相加,若结果不为0,则作为结果多项式对应项的系数。同时p1和p2部分分别指向下一项p1->expon > p2->expo...原创 2018-10-27 21:32:01 · 699 阅读 · 0 评论 -
数据结构——2.3队列及其实现
一、什么是队列队列:具有一定操作约束的线性表插入和删除操作:只能在一端插入,而在另一端删除,发生在队列的两头数据插入:入队列数据删除:出队列先来先服务先进先出:FIFO二、队列的抽象数据类型描述类型名称:队列数据对象集:一个有0个或多个元素的有穷线性表操作集:长度为MaxSize的队列Q∈Queue,队列元素item∈ElementType三、队列的顺序存储实现队列的...原创 2018-10-27 19:20:29 · 274 阅读 · 0 评论 -
数据结构——2.2堆和栈
一、什么是堆和栈?举个例子,算术表达式是由两类对象构成的:运算数和运算符号,不同运算符号优先级不一样中缀表达式:运算符号位于两个运算数之间。如a+b*c-d/e后缀表达式:运算符号位于两个运算数之后。如abc*+de/-前缀表达式:运算符号位于两个运算数之前。如-+a*bc/de后缀表达式求值策略:从左向右扫描,逐个处理运算数和运算符号,当碰到运算数的时候,把它记住。当碰到运算符号的时...原创 2018-10-26 23:06:46 · 317 阅读 · 0 评论 -
数据结构——2.1线性表及其实现
一、引言线性结构是数据结构里面最基础最简单的一种数据结构类型,最典型的一种叫做线性表。举个例子:如何用程序设计语言来表示这样的一个一元多项式及其相应的操作运算呢?顺序存储结构直接表示用一个数组存储第i项的系数ai,而指数对应这个分量的下标这样带来的问题是什么呢?假如我要表示x的两千次方,数组的大小就需要2001项,而其中很多都是含有0的项,这样就造成了存储空间的浪费。而且在做加...原创 2018-10-26 11:38:18 · 484 阅读 · 0 评论