随笔分类 -  数据结构

摘要:图(graph) 一、图的定义 用顶点、边构成的存储结构。有: G=(V,E)(graph=(Vertex,Edge)) Vertex就是顶点的有穷非空集合,Edge就是边的的 有穷集合。 二、图的术语 有向图/无向图:无向图中的边叫边,有向图中的边叫弧 完全图:对无向图取任意两个顶点都有一条边相连 阅读全文
posted @ 2021-08-21 20:00 Pangenda 阅读(243) 评论(0) 推荐(0)
摘要:串 一、定义 串是由零个或多个字符组成的有限序列,又叫字符串。和栈、队列一样,既有链式存储也有连续存储,但总的来说,在串这里连续存储优于链式存储,因此我们大都只讨论连续存储。由此我们可知,这里连续存储就和我们熟知的char类型数组一样了。 二、串的操作 栈、队列中更多的是关注单个元素的操作,比如查找 阅读全文
posted @ 2021-08-18 21:44 Pangenda 阅读(482) 评论(0) 推荐(0)
摘要:树(tree) 一、定义 树是n个节点的有限集。n=0时称为空树,n>1时其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树。形状类似于树状图,如下图所示: 再次强调几点: 1.根节点是唯一的,不可能存在多个根节点。 2.子树的个数没有限制,但是一定不可能相互 阅读全文
posted @ 2021-08-16 22:46 Pangenda 阅读(238) 评论(0) 推荐(0)
摘要:队列(queue) 一、定义 一种可以实现“先进先出”(FIFO)的存储结构,即先进入队列的数据先取出来。 二、分类 链式队列:链表实现,实现难度比静态队列低很多 静态队列:数组实现,静态队列通常都必须是循环队列 三、程序实现前该解决的问题 (1)静态队列为什么必须是循环队列? 因为front、re 阅读全文
posted @ 2021-08-16 17:32 Pangenda 阅读(102) 评论(0) 推荐(0)
摘要:栈(stack) 一、定义 一种可以实现“后进先出(LIFO,last in first out)”的存储结构,即后存放进栈的数据要先出去。就像箱子里取书一样,先拿上面的书,再拿下面的书。 二、栈的分类 静态栈:即采用连续存储(数组)的方式实现 动态栈:即采用离散存储(链表)的方式实现,示意图如下 阅读全文
posted @ 2021-08-16 16:46 Pangenda 阅读(94) 评论(0) 推荐(0)
摘要:链表(list) 如下图所示即为普通的单链表结构: 一、概念 N个节点(node)离散分配、彼此通过指针相连、每个节点只有一个前驱节点和一个后驱节点,首节点没有前驱节点,尾节点没有后续节点 专业术语: 首节点:存放第一个有效数据的节点 尾节点:存放最后一个有效数据的节点 头节点:首节点之前的那个节点 阅读全文
posted @ 2021-08-16 16:39 Pangenda 阅读(111) 评论(0) 推荐(0)
摘要:数组(array) 这里所讲的数组和前面知识讲的差不多一样,都是开辟一片连续存储的空间,只不过这里只是认为定义了一个类数组的结构体。 一、利用数组存储数据的优缺点 优点:存取速度快,实现容易理解。 缺点:插入删除元素很慢,因为每次都需要左移或者右移。 二、和数组有关的基本操作 初始化:先声明一个数组 阅读全文
posted @ 2021-08-16 16:07 Pangenda 阅读(59) 评论(0) 推荐(0)
摘要:一、概述 我们通常会把现实中大量而复杂的问题以特定的数据类型和特定的存储结构存放到主存储器中,以及在此基础上为实现某个功能(比如查找某个元素、删除某个元素、对元素进行排序等)而执行相应的操作,这个相应的操作也叫算法。 (1)数据结构 狭义上,数据结构是研究数据存储结构的一门学科;广义上,数据结构还包 阅读全文
posted @ 2021-08-16 15:39 Pangenda 阅读(110) 评论(0) 推荐(0)