栈、队列、堆、图
<ul>
<li>栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 </li>
</ul>
<h2>栈的特点</h2>
<ul>
<li>先进后出(后进先出),从栈顶放入元素的操作叫入栈,取出元素叫出栈</li>
<li>栈的结构就像一个集装箱或叠盘子,越先放进去的东西越晚才能拿出来</li>
<li>栈常应用于,实现递归功能方面的场景,例如斐波那契数列</li>
</ul>
<h2>队列</h2>
<ul>
<li>队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素</li>
</ul>
<h2>队列的特点</h2>
<ul>
<li>先进先出。从一端放入元素的操作称为入队,取出元素为出队</li>
<li>栈的结构就像现实中的排队,先放进去的东西先拿出来</li>
<li>栈常应用于消息队列</li>
</ul>
<h1>堆</h1>
<ul>
<li>堆可以被看做一棵树的数组对象</li>
</ul>
<h2>堆特点</h2>
<ul>
<li>
<p>堆中某个节点的值总是不大于或不小于其父节点的值;</p>
</li>
<li>
<p>堆总是一棵完全二叉树。</p>
</li>
<li>将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。</li>
<li>常见的堆有二叉堆、斐波那契堆等。</li>
<li>堆有序的特点,一般用来做数组中的排序,称为堆排序</li>
</ul>
<h2>堆的定义</h2>
<ul>
<li>n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。 </li>
<li>(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4…n/2),满足前者的表达式的成为小顶堆,满足后者表达式的为大顶堆,这两者的结构图可以用完全二叉树排列出来</li>
</ul>
<h1>图</h1>
<ul>
<li>图是由结点的有穷集合V和边的集合E组成。</li>
<li>为了与树形结构加以区别
<ul>
<li>在图结构中常常将结点称为顶点,</li>
<li>边是顶点的有序偶对,</li>
<li>若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。</li>
</ul></li>
</ul>
<h2>图特点</h2>
<ul>
<li>图是一种比较复杂的数据结构,在存储数据上有着比较复杂和高效的算法,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构</li>
</ul>