数据结构笔记整理

数据结构:链表,数组,堆栈,队列,二叉树,哈希表,图,几个排序算法

问题1:java中arraylist如何实现:一个可以随机访问,自动增加容量的数组,怎么搞出来的?

问题2:如何用栈实现计算算术表达式。

问题3: 辗转相除法

数据结构除了数组之外都可以认为是抽象数据结构(ADT)

1.数组:

--无序数组:插入快,查找慢,删除慢 

--有序数组:查找比无序快(二分),插入慢,删除慢

(有序无序如果知道下标,那查找快,可以直接通过下标访问)

二分查找:前提是有序数组(可以用递归实现,也可以不用)

大O表示法



2.简单排序(冒泡排序,快速排序,归并排序,堆排序) 时间复杂度 ,空间复杂度,稳定性


--冒泡排序(n-1轮,最大的数据行总是'冒泡到数组的顶端')

--堆排序 

(1)建立堆(大顶):从最后一个非叶节点开始

(2)调整堆


3栈和队列

栈实现队列。

栈实现算数表达式求值。java中栈利用后缀表达式的方式实现。


4链表

5.二叉树

删除节点(两个子节点的情况):用它的中序后继节点代替(例子:霍夫曼树)


6.红黑树

--定义:红黑树是特殊的二叉查找树,任意一个节点包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。此外,每个节点都有存储位表示节点的颜色,颜色是红或者黑。


7.哈希表

--定义:哈希表是一个在时间和空间上做出权衡的经典例子。

1.图

(1) 存储结构。

 --邻接矩阵。

邻接矩阵存储方法采用N*N矩阵(N代表图节点的个数)。

适用情况:矩阵是稠密的矩阵(比如图是完全图时)

--邻接表。

每一个结点后面所接的结点都是它的邻接结点。

适用情况:稀疏矩阵,更节省空间的存储结构。

(2)图的遍历。

---广度优先。类似于一个分层搜索的过程,广度优先遍历使用队列来保持访问过的结点的顺序,按这个顺序来访问这些结点的邻接结点。(横向挖掘)

---深度优先。每次都在访问完当前结点后首先访问当前结点的第一个结点。(纵向挖掘)采用递归实现。





6.nginx负载均衡
7.KMP算法
8.JVM

11设计模式


### 数据结构学习资源推荐 数据结构作为计算机科学的核心课程之一,其重要性不言而喻。对于希望深入理解并掌握数据结构的学生而言,《王道数据结构》是一本非常经典的教材[^1]。以下是关于《王道数据结构笔记整理2025版》的相关信息以及如何高效利用该书进行学习。 #### 关于《王道数据结构》的特点 《王道数据结构》一书中强调了运算的定义与其实现之间的关系——即运算的概念建立在逻辑结构之上,而具体的实现则依赖于存储结构的设计。这种理论联系实际的方式有助于读者更好地理解和应用各种数据结构及其操作方法。 #### 学习建议 为了更有效地学习数据结构相关内容,可以采取如下策略: 1. **注重基础概念的理解** 阅读书籍时应重点关注基本的数据结构形式(如数组、链表、栈、队列等),了解它们各自的优缺点及适用场景。 2. **实践编程能力提升** 结合具体案例练习编写程序来解决问题是非常重要的环节。通过反复操练能够加深印象,并提高解决复杂问题的能力。例如,在掌握了线性表之后尝试完成一些涉及增删改查功能的小项目。 3. **参考其他优质资料补充知识体系** 虽然《王道数据结构》已经提供了详尽的内容覆盖范围,但仍可查阅更多开源文档或者在线教程进一步拓宽视野。比如GeeksforGeeks网站上就有大量有关高级主题的文章可供探索;Coursera平台也有不少由顶尖大学开设的相关MOOCs值得参与。 ```python class Node: def __init__(self, data=None): self.data = data self.next = None def append(head_ref, new_data): # 创建新节点并将data赋给它 new_node = Node(new_data) if head_ref is None: head_ref=new_node return head_ref last=head_ref while(last.next): last=last.next last.next=new_node return head_ref ``` 上述代码片段展示了单向链表中添加元素的一个简单例子。通过对这类基础算法的实际编码演练,可以帮助巩固所学知识点。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值