1.数组 array
就不过多说什么了,最常用的数据结构
2.链表 linkedlist
线性表的一种,分为单向表,双向表,循环表
都是按照一定顺序串联在一起,添加修改删除,修改指向关系到新的元素即可
单向表: 指向前一个元素
双向表: 指向前一个与后一个元素
循环表: 与单项表相比,最后的元素指向了最开始的元素,形成闭环
自己写的index_list.php
3.栈 stack
与队列类似 ,先进后出 只有一个出口,只能在栈顶部,增加、弹出元素
使用的数组来存储(可能有扩展类),每次尾部增加key值元素,从尾部取出元素
自己写的index_stack.php
4.堆 heap
一个跟二叉树一样的数据结构,用一维数组存储,有左右两个分支,按照顺序每层依次排列,满了之后才会进行下一次,两个子节点没有顺序。
最大堆: 父节点比子节点都大 堆顶节点最大
最小堆: 父节点比子节点都小 堆顶节点最小
根据父节点可以找到子节点(n/2) 也可以根据子节点找到父节点((n-1)2)
堆的层数floor(log(节点数),2)+1; 一层的节点数 2 h 次幂。
适用于排序,优先队列,快速找到最大、最小值,
添加,删除操作都需要重现整合堆数据
自己写的index.php
5.线性表 list
跟链表相似,元素按照顺序排列在一起 ,
按结构逻辑 分为一般线性表和受限线性表(栈 队列)
可能也有扩展 可以直接使用
用数据存储的话就是逐个添加,插入时,依次向后错一个key 删除时 依次向前错一个
key
自己写的index.php
6.队列 queue
跟栈相反,先进先出,头部出,尾部入
扩展不清楚,用数组存储,
每次入队添加,出队取开头数据用数组函数操作
7.集合 set
元素不重复的集合,php实现 每次插入都需查找是否重复,进行交集并集操作
8.字典 map
关联数组,键值对方式存储,通过key直接获取到值,数组实现key,val,next=>(重
复)
*9.图 graph
数据结构,节点,边,构建图形,每个节点之间的关联关系,无向表,有向表,存储
方式邻接矩阵,邻接表 还有十字链表,存储,各个节点之间的联系,权重,