数据结构
lynijk
编程界的小学生
展开
-
数据结构 --二叉搜索树
二叉搜索树二叉搜索树定义二叉搜索树也称为二叉查找树、二叉排序树,是一种插入、删除、查找操作性能都不错的数据结构二叉搜索树首先还是一棵二叉树,但是这个二叉树有一些特点:对于树中的每个结点,如果左子树存在,那么左子树中所有结点的值都小于该结点的值如果右子树存在,那么右子树中所有结点的值都大于该结点的值树中没有值相等的结点下图就是一棵二叉搜索树,可见满足上述二叉搜索树的特点二叉搜索...原创 2020-02-26 14:29:27 · 995 阅读 · 0 评论 -
数据结构 -- 链表
单链表(ForwardList)链表是链式存储结构的线性表的实现,由于内存地址不连续,所以链表不仅要有数据域,还要存储后继结点指针,如果一个结点只有一个指向后继结点的指针域,那么该线性表称为单链表头指针与头结点头指针中存储的是第一个结点的内存地址,通过头指针找到第一个结点,之后通过第一个结点的指针域可以找到第二个结点,以此类推,可以找到链表的最后一个结点,最后一个结点的指针域为空(nullp...原创 2020-02-26 12:37:06 · 306 阅读 · 0 评论 -
数据结构 -- 队列
队列也是一种特殊的线性表,特殊在于只允许在一端插入元素,在另一端删除元素,所以队列有先进先出的特性队列的可以分为普通队列和带有优先级的队列术语队头:允许删除元素的一端队尾:允许插入元素的一端入队:向队列中插入元素操作出队:从队列中删除元素操作普通队列#ifndef QUEUE_H_#define QUEUE_H_#include <tools/base/noncopya...原创 2020-02-04 12:30:15 · 176 阅读 · 0 评论 -
数据结构 -- 栈
栈可以理解为一种受限的线性表,只能在表尾插入和删除元素。栈有线性表的特点:每个元素都有且之后一个前驱节点和一个后继节点(第一个节点只有后继节点,最后一个节点只有前驱节点)同时也有自身的特点:后入先出术语栈顶:允许插入和删除元素的一端栈底:与栈顶相对的一端入栈:插入数据操作出栈:删除数据操作抽象数据类型ADT 栈(stack)Data 同线性表。元素具有相同的类型,相邻元素具有...原创 2020-02-04 12:05:06 · 211 阅读 · 0 评论 -
数据结构 -- 二叉树
树线性表是处理一对一关系的数据结构,这里的一对一是指:在线性表中一个结点只有一个前驱结点和一个后继结点(头结点和尾结点除外)树是处理一对多关系的数据结构,一个结点有一个父结点和多个子结点,所以树型结构有两个特点:树有一个根结点,而且这个根结点是唯一的一个结点有且仅有一个父结点,可以有多个子结点(当然也可以没有)树中结点的分类根结点内部结点:不是根结点,并且有子结点的结点叶结点...原创 2020-02-01 22:09:19 · 350 阅读 · 0 评论 -
数据结构 -- 动态数组
线性表定义0个或多个数据元素的有限序列理解:相同类型的元素之间是有顺序的,第一个元素只有一个后继节点,没有前驱节点,最后一个元素只有一个前驱节点,没有后继节点,其他元素各有一个前驱节点和后继节点抽象数据类型ADT 线性表(List)Data 数据元素之间满足线性表的定义Operation InitList(*L) // 初始化操作,建立一个空的线性表 Lis...原创 2020-01-30 14:45:42 · 1351 阅读 · 0 评论 -
数据结构 -- 绪论
数据结构是做什么的?数据结构是研究数据如何在计算机内存中进行组织和存储,使得我们可以高效的获取数据或者修改数据学习数据结构有用吗?目前在学习、做项目中确实没有感受到哪里需要用到数据结构,这是为什么呢?原因很简单,你使用的编程语言,IDE、操作系统已经把数据结构都实现好了,而你需要的是怎么使用它,怎么在它的基础上增加一些业务逻辑实现一个产品另外一个档次就是开发IDE、编成语言、操作系统,在...原创 2020-01-30 13:10:58 · 199 阅读 · 0 评论