随笔分类 - 数据结构
摘要:查找 查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或记录 查找表是由同一类型的数据元素构成的集合,集合中的数据元素是一种松散的关系 静态查找表:仅作查询操作 动态查找表:作插入和删除操作 关键字: 主关键字:可唯一表示一个记录 次关键字:可以识别若干记录 查找算法的评级指标
阅读全文
摘要:图 图的概念 G=(V,E)/Graph=(Vertex,Edge) V:顶点(数据元素)的有穷非空集合 E: 边的有穷集合 无向图:每条边都是无方向的 有向图:每条边都是有方向的 完全图:任意两个点都有一条边相连 有向完全图<vi,vj>:n个顶点,n(n-1)条边 无向完全图(vi,vj):n个
阅读全文
摘要:二叉树 二叉树的概念 二叉树是n(n≥0)个结点的有限集 或者是空集(n= O),或者由一个根结点及两棵互不相交的分别称作这个根的左子树和右子树的二叉树组成 二叉树结构最简单、规律性最强 所有树都能转为唯一对应的二叉树,具有一般性,解决了树的存储结构及其运算中存在的复杂性 特点: 每个结点最多含有两
阅读全文
摘要:树 非线性结构:1对n 结点之间有分支,具有层次关系 树(Tree)是n (n≥0)个结点的有限集 n = 0,称为空树 n >0 有且仅有一个特定的称为根(Root)的结点 其余结点可分为m (m≥0)个互不相交的有限集T1,T2,T3,...Tm,其中每一个集合本身又是一棵树,并称为根的子树(S
阅读全文
摘要:广义表 是一种扩展线性表,又称为列表(Lists),是n(n>=0)个元素的有限序列,其中每一个ai是一个原子或广义表 一般用大写字母表示广义表,小写字母表示原子 记为LS=(a1,a2,...,an);其中LS为表名,n为表长,ai为表的元素 广义表中的数据元素有相对次序,一个直接前驱和一个直接后
阅读全文
摘要:数组 按一定格式排列起来的,具有相同类型的数据元素集合 定义后维数和维界不再改变(结构固定) 且一般不做插入和删除操作,因此一般采用顺序存储结构 一维数组:线性表中的数据元素为非结构的简单元素 线性结构(定长线性表) 声明格式:数据类型 变量名称[长度];例:int a[5]; 二维数组:一维数组中
阅读全文
摘要:串 串的概念 内容受限(只能是字符)的线性表;串中逻辑关系与线性表相同 零个或多个字符组成的有限序列 (串名)S="(串值)a1,a2,...,an" ((串长)n>=0) 空串用∅表示 子串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串 真子串:不包含自身的所有子串 主串:包含子串的
阅读全文
摘要:队列 是一种先进先出线性表,FIFO; 表的一段(表尾)插入,表的另一点端(表头)删除 ;同线性表一样仍为一对一关系;有顺序队或链队;只能在队首或队尾操作 Q=(a1队头,a2,...,an队尾) 线性表: Insert(L,i,x) 1<=i<=n+1 Delete(L,i) 1<=i<=n 队列
阅读全文
摘要:栈 一种特殊线性表,仅限在一端(栈顶)进行插入和删除操作(通常是表尾) ; 同线性表相同仍是一对一关系 表尾an端又称为栈顶Top;表头a1端又称为栈底Base;只能在栈顶运算;有顺序栈和链栈 又称为后进先出线性表,简称为LIFO结构 线性表: Insert(L,i,x) 1<=i<=n+1 Del
阅读全文
摘要:双向链表 单链表查找某结点的后继结点的执行时间为O(1);单链表查找某结点的后继结点的执行时间为O(n) 在单链表的每个结点里再增加一个指向其直接前驱的指针域prior,这样链表中就形成了有两个方向不同的链 双向链表具有对称性:p->next->prior=p=p->prior->next 双向链表
阅读全文
摘要:循环链表 一种头尾相接的链表,表中最后一个结点的指针域指向头结点 ,整个链表形成一个环即没有NULL指针,因此遍历操作时,终止条件是否等于头指针 优:从表中任一结点出发,均可找到表中其他结点 头指针表示单循环链表: 找a1的时间复杂度:O(1) 找an的时间复杂度:O(n) 当表的操作常常在首尾进行
阅读全文
摘要:线性表的链式存储 线性表的链式表示又称为非顺序映像或链式映像 结点在存储器中位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻;链表中的逻辑次序和物理次序不一定相同;访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其他结点(顺序存取法),因此访问各个结点时间不同 用一组物理位
阅读全文
摘要:线性表的顺序存储 线性表的顺序表示又称为顺序存储结构或顺序映像 顺序存储:把逻辑上相邻的数据元素(类型相同)存储在物理上相邻(中间没有空出存储单元,占用一片连续的存储空间)的存储单元中的存储结构;逻辑位序与物理位序相差1 优: 任一元素可以随机存取 存储密度大 缺: 属于静态存储形式,元素个数不能自
阅读全文
摘要:线性表 线性表是具有相同特性的数据元素的一个有限序列; 是一种典型的线性结构 线性表的两种存储结构: 顺序存储结构 链式存储结构 抽象数据类型线性表 抽象数据类型线性表的定义: ADT List{ 数据对象:D=ai|ai属于Elemset,(i=0,1,2,3,...,n,n>0)} 数据
阅读全文
摘要:传值:改变的是形参的值,实参的值并未改变 函数分别有自己的存储空间 #include <stdio.h> void swap(int m,int n){ int t; t=m; m=n; n=t; } int main(void) { int a=1,b=2; swap(a,b); printf("
阅读全文
摘要:数据类型及抽象数据类型 数据类型 定义在一组性质相同的值的集合以及定义在这个值的集合上的一组操作的统称,即数据类型=值的集合+值集合上一组操作 数据类型的作用: 约束变量或常量的取值范围 约束变量或常量的操作 抽象数据类型(ADT) 一个数学模型以及定义在此数学模型上的一组操作;不考虑计算机内的具体
阅读全文
摘要:时空复杂度 算法效率: 时间效率:程序在计算机上执行所消耗的时间 事后统计 缺:编写程序实现算法要花费较多时间精力;所得实验结果依赖于计算机的软硬件等环境因素,掩盖算法分身的优劣 事前分析:估算;算法运行时间=一个简单操作所需的时间*简单操作次数(转化为语句频度的比较) 例: 1 for(i=1;i
阅读全文
摘要:相关概念 程序=数据结构+算法 算法:对特定问题求解方法和步骤的一种描述,是指令的有限序列 算法的描述: 自然语言 流程图:传统流程图、NS流程图(盒图) 伪代码 程序代码 算法的特性: 有穷性:有穷步之后结束,每一步都在有穷时间内 确定性:有确切含义,无二义性 可行性:可执行的 输入:0或多个输入
阅读全文