八大数据结构自己的考研笔记(持续更新中)

本文详细介绍了数据结构的八大基本类型:数组、栈、队列、链表、树、堆、散列表和图。数组方便遍历但无法扩容,栈遵循后进先出原则,队列则是先进先出。链表灵活增删但空间消耗大,树包括二叉树等,适用于大量动态数据处理。堆常用于排序,散列表提供快速存取。图用于复杂关系的表示,如网络路由。此外,还提到了各种数据结构在实际问题中的应用,如后缀表达式计算和哈夫曼编码。
摘要由CSDN通过智能技术生成

参考书:数据机构与算法设计 c++语言描述(第二版)Larry Nyhoff 著 黄明达 等译 陈佩佩 审

文章是自己根据博主内容总结扩充 结合资料总结出来的

https://blog.csdn.net/yeyazhishang/article/details/82353846?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161822638016780265435607%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161822638016780265435607&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-82353846.pc_search_result_hbase_insert&utm_term=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84

在这里插入图片描述

数据结构八大数据结构:队列(Queue)树(Tree)堆(Heap)数组(Array)栈(Stack)链表(Linked List)图(Graph)散列表(Hash)**
1、数组
数组可以连续储存多个元素 在内存中分配也是连续的 元素通过数组下标访问(下标从0开始)
例:int[] data = new int[50]; data[0]=1;
定义了数组第一个值为1的数组
优点:遍历数组很方便
缺点:1、无法扩容 2、数据类型单一3、添加删除数组需要移动其他元素 很慢
列表:ADT:基本操作:
1、构造函数
2、判空
3、插入
4、删除
5、遍历
2、栈(水桶)例如水桶里倒入泥土 要挖出泥土时从最上层开始挖则这时的顶部叫做栈顶 但底层却只能等
例子:扑克牌游戏 游戏者可以打出一个牌到这个堆堆顶部,或者可以提取这个已出牌堆顶上的一张牌
顶层的泥土挖完才能移动成为栈底
先进后出 后进先出
从栈顶放入元素(入栈);取出元素(出栈)
ADT:
1、构造函数
2、empty();检查一个栈并根据栈里是否包含值来返回true 或 false
3、push();在栈顶添加一个值来修改栈
4、top();提取栈顶的值
5、pop();从栈顶删除一个值来修改栈
display()显示储存在栈中的所有元素

🌟:后缀表示(RPN) 中缀表达式转换为后缀表达式 计算后缀表达式的值
3、队列
先进先出后进后出(一端添加元素(入队) 一段取出元素(出队))
例如:超市排队付款 随着人们的增加在队尾加入人则为入队 结账完毕则离开叫做出队
ADT:
1、创建一个空队列
2、检查队列是否为空
3、enqueue();在队列后段添加元素
4、front();从队列前端提取一个值
5、dequeue();从对列的前端删除一个值
在这里插入图片描述

4、链表
是物理存储单元上非连续非顺序的存储结构
优点:不需要初始化容量 可以任意加减元素。添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快;
缺点:占用空间很大 遍历链表非常耗时

类型:
1、带头节点的列表
2、循环链表
3、双向链表
5、树
由n个有限节点组成的

重点:二叉树
1、每个节点最多有两棵子树
2、左子树和右子树有顺序不能颠倒
3、只有一棵子树也要区分左右子树
(处理大批量的动态数据)
例子 1、某些阶段都是两种结果反复出现的实现
🌟:遍历 前序遍历 中序遍历 后序遍历
🌟:哈夫曼编码 哈夫曼树
6、散列表 哈希表(键、值) 引申到java hashmap hashtable
key:记录存储到位置
value:存在在以key为下标的数组空间中

7、堆 (一棵树的数组对象)
根节点最大的堆(最大堆)(大根堆)
跟节点最小的堆(最小堆)(小根堆)
根据堆有序的特点 一般用来做数组的排序 堆排序

8、图(由节点的有穷集合和边的集合组成)
按照顶点指向方向(无向图 有向图)
图是一种比较复杂的数据结构,在存储数据上有着比较复杂和高效的算法,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值