个人笔记整理——常用的数据结构

这篇博客是对常用数据结构的个人笔记整理,涵盖了数组、链表、栈、队列、树、散列表、堆和图等八大结构。详细介绍了各自的特点、优缺点以及应用场景,帮助读者对数据结构有更深入的理解。
摘要由CSDN通过智能技术生成

以下为个人在复习过程中的笔记整理,从笔记本上挪到博客上也能加深一遍记忆,细节不完整,好歹有个大概的了解。


目录

 

1、数组

2、链表

3、栈

4、队列

5、树

6、散列表

7、堆

8、图


1、数组

优点:索引查询快,遍历方便;

缺点:只能存储一种元素,增删慢,需要移动其他元素。

 

2、链表

物理存储上非连续、非顺序的存储结构,逻辑顺序是通过链表的指针地址实现的。

优点:不用初始化容量,可以任意增删且十分方便;

缺点:大量指针域占用额外空间,遍历查找耗时。

链表的分类:

a.单向链表:每个节点包括一个data数据域以及一个指向后继节点的指针域next。

b.双向链表:每个节点包括一个data数据域以及两个分别指向前驱和后继节点的指针域prev和next。

c.循环链表:链表的尾节点的指针域next不指向null,而是指向头节点。

在面试过程中数组和链表的区别是最基本的问题,有时候也会问到“Arraylist和Linkedlist的区别”,其中Arraylist的底层实现是数组,Linkedlist的底层实现的链表,下图摘自:https://blog.csdn.net/weixin_42468526/article/details/81178698

Arraylist和Linkedlist

 

3、栈

一种只能在一端进行操作的线性表,使用先进后出的原则,常用于实现递归功能方面的场景。

在JVM中也有很多关于栈的使用,Java的栈内存由编译器自动分配和释放,生命周期短,且比较小,使用后进先出(LIFO)内存分配规则,速度较快。

Java中有直接封装好的Stack类,可直接进行使用,参考https://www.iteye.com/blog/haoran-10-1490811

 

4、队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值