数据结构学习笔记

1.线性表:n个数据元素的有限序列===汇集对象(有且仅有一个直接前驱和后继)
①顺序表:读取数据=>T(n)=O(1),插入或者删除=>T(n)=O(n)
②链表:单链表(单向),结点(数据域,指针域(只有一个)指向后继);
双链表(双向),结点(数据域,指针域(两个),一个指向前驱,一个指向后继)
循环链表(环形),特点最后一个结点的指针指向头结点,从表中的任意一个结点都可以找到表中其他结点
note:头指针=>头结点=>第一个结点=>……,头结点可以不存储任何东西,也可以存储线性表的长度等附加信息

2.栈和队列:同属线性结构,线性表(线性表的子集)因此具有线性表的性质,不同之处在于操作受限
①栈:仅限在表尾进行插入和删除操作,表尾为栈顶,表头为栈底,特点是依次序进栈,后进先出出栈
②队列:只允许一端插入,另一端删除,如排队一样,特点是先进先出
3.字符串:由零个或多个字符组成的受限序列,其逻辑结构与线性表极为相似,不同在于字符串处理的对象为字符集儿线性表可以为任意元素对象(堆:以一组地址连续的存储单元存储字符串序列,其存储空间是在程序的执行过程中动态分配的)
note:字符串匹配(模式匹配)经典算法:KMP
4.数组:定长的线性表,其数据元素亦是,一般不做插入和删除操作,存储方式:①列序②行序
5.广义表:采用链式存储结构(组成:院子或列表),非线性的数据结构,线性表的推广
6.树和二叉树:非线性数据结构,是以分支关系定义的层次结构
note:树有且仅有一个根节点,其余结点分为M个互不相交的有限集,每个集有是一个树成为子树
二叉树:每个结点最多只有两颗子树,且子树有左右之分,次序不能任意颠倒。
重要性质:①二叉树第i层至多有2^(i-1)个结点
②深度为k的二叉树结点数至多为2^k - 1(总结点数n = n0 + n1 + n2 )
③任意二叉树,终端结点即叶子也即度为零的结点数和度为2的结点数的关系:n0 = n2 + 1
④如果结点为i ,那么其左子树为2i(偶数),右子树为2i+1
……
存储:①顺序存储,有根据完全二叉树的顺序编号,自上而下,由左至右存储在地址连续的存储单元
对于一般二叉树而言要按照完全二叉树编号然后存储,补进的部分只占单元不存数据(浪费空间)
②链式存储:为了解决顺序存储补进空位影响效率。1)二叉链表:数据域,左右指针域;2)三叉
链表:叫二叉链表多了一个双亲指针域(为了方便找到双亲)
遍历:①先序遍历:DLR
②中序遍历:LDR
③后序遍历:LRD
④层序遍历:从上而下,同一层中从左至右
这里写图片描述
结论::先序和中序遍历课确定唯一二叉树
后序和中序遍历可确定唯一二叉树

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值