数据结构与算法
详细总结常用的数据结构与算法和自己在使用过程中的经验,结合JAVA中对一些数据结构的应用,总结对其使用的注意事项
黄智霖-blog
骨灰级技术爱好者
展开
-
数据结构与算法(五):队列与应用
一、定义和栈一样,队列也是一种操作受限的线性表:它只允许在表的前端进行删除操作,在表的后端进行插入操作,按照这个特性,先插入的数据会被先移除,所以队列是一种先进先出(FIFO)的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头,而插入操作我们一般称为“入队”,删除操作称为“出队”。队列也是一种抽象的数据结构,可以用数组实现(顺序队列),也可以用链表实现(链式队列)。二、实现...原创 2019-07-21 02:28:15 · 5183 阅读 · 1 评论 -
数据结构与算法(四):栈与应用
一、定义栈是一种操作受限的线性表。之所以说它操作受限,是由于其只能在一端插入和删除数据。这一端叫做“栈顶”,另外一端则为“栈底”。插入的操作我们通常称之为“PUSH”(入栈),删除的操作我们通常称之为“POP”(出栈)。所以它具有FILO(先进后出)的特性。如果栈满了,我们是不允许再继续入栈的,称这种情况为“栈上溢”,对应如果栈内为空,也是不允许继续出栈的,这种情况为“栈下溢”。这就像餐馆里的...原创 2019-04-26 10:40:29 · 8593 阅读 · 2 评论 -
数据结构与算法(三):链表
一、单向链表上一篇文章我们提到了,和数组一样,链表也属于线性表结构,但是链表是链式的,而数组是顺序的。它和数组最大的区别就是,它的元素存储并不依赖连续的内存空间,元素之间使用指针来实现逻辑顺序。如果创建一个长度为4的数组,其内存布局可能是下图这样,它要求元素的内存空间必须连续以实现常量阶的寻址操作,但是如果内存中没有这么大的整块儿空间,那么内存分配会失败。而如果是链表结构的话,每个...原创 2019-04-01 14:36:10 · 9218 阅读 · 1 评论 -
数据结构与算法(二):数组
注:我们先由简到难总结一下常用的数据结构,如简单数组、链表、散列表、队列、栈、树、图等等,最后再来研讨算法。一、线性表线性表是很基本的一种数据结构,就如字面意思一样,它把若干数据线性组合在一起:每个元素都最多只有前相邻和后相邻元素,也就是元素之间首尾相接。典型的线性表结构有数组、链表、栈、队列等。它有一些特征(摘自百度百科): 1.集合中必存在唯一的一个“第一元素”。...原创 2019-03-23 19:26:53 · 16788 阅读 · 0 评论 -
数据结构与算法(一):时间复杂度和空间复杂度
前言:俗话说程序=数据结构+算法,可见其重要性,但是切记不能死记硬背,最重要的是理解其背后原理和思想,最终达到训练我们的逻辑思维,提高编程技能,解决实际问题的目的。一、概述初学数据结构和算法的时候,大家都会接触到时间复杂度和空间复杂度这两个概念,但是在学校期间估计很多同学都没有去理解其意义,认为其如同鸡肋,只是应付考试,甚至工作时间不长的同学也可能会有类似感觉:代码都写不过来,还有时间去算...原创 2019-03-23 15:05:22 · 22522 阅读 · 2 评论