常用数据结构和算法

程序 = 数据结构+算法

算法:接收有限个输入经过有限个指令处理在有限时间内产生确定的输出(时间和空间复杂度)

数据结构 = 线性结构+非线性结构

线性结构:数组,列表,栈,队列

非线性结构:树,堆,图,散列表hashing

数组:数据是存储在连续空间内,可以通过角标直接访问任意数据。容易访问,增删麻烦要移动其他数据位置。

链表:访问麻烦,增删简单

需要从第一个开始读取,直达目标节点

增加:a和c之间添加b,把a指针修改指向b,b的指向c,即完成b添加

删除:a和c之间删除b,把a指针指向c,即完成删除链表内的b。

        单链表(每一个节点包含了数据块和指向下一个节点的指针)

        双链表(每一个节点不仅存储指向下一个节点的指针,而且存储指向前一个节点的指针)              循环链表(在链表的尾部有一个指向头结点的指针,头结点也有一个指向尾节点的指针,第一个结点有指向头节点的指针)

        

:后进先出,先进后出,类似堆积木,只能在最上面放(push)和拿(pop),只能访问最上面的数据

队列:类似与排队,一端出(取出元素--删除)一端进(添加元素),先入先出FIFO

非线性结构:

堆:一棵完全二叉树数组,堆中某个节点的值总是不大于或不小于其父节点的值(大头堆--下图,小头堆),注意数组从1开始存,也就0位置是空的。(每层是最多是2的n-1次方个)

 

树:树是n(n>=0)个结点的有限集

图:有向图【(v,w) != (w,v)】,无向图【(v,w)=(w,v)】

散列表hashing:key输入一个散列函数内得到value

直接地址法:H(Key) = a*Key+b
除留余数法:H(Key) = Key%p

平方取中法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值