数据结构
文章平均质量分 75
数据结构学习与刷题
sniper_fandc
这个作者很懒,什么都没留下…
展开
-
Iterable、Collection、List 的常见方法签名以及含义
这是数据结构集合的有关类和接口的关系图,弄清集合关系,这一张图就够了。下面我们先来了解一下iterable、collection、list三个接口的主要功能和常用的方法:Iterable接口:集合框架最顶端的接口,实现接口的遍历。迭代器接口可进行迭代的接口iterator()这个方法返回的是Iterator的实例。Iterator也是一个接口,为什么不将两个接口合并为一个接口,这样不是更简洁更方便吗?...原创 2022-03-14 21:39:20 · 432 阅读 · 1 评论 -
数据结构之ArrayList与顺序表
ArrayList是一个实现List接口的类,底层是动态类型顺序表,本质也就是数组,动态主要体现在它的扩容机制。那么既然是底层是数组,那我们为什么不直接使用数组而是要使用ArrayList类呢?1.假设我们有这样一个数组:我们要计算数组有效元素个数,但我们是否可以知道有效的数据?如果是纯数组,0并不是有效数据,但是如果我们有效数据就是0,就无法单靠数组解决了,而定义顺序表,其中会定义size变量,用于有效数据的使用。当然,顺序表还定义了其他方法(增...原创 2022-03-16 21:33:17 · 148 阅读 · 1 评论 -
数据结构之LinkedList与链表
目录1.LinkedList的特点和存在意义2.LinkedList的简单使用2.1.LinkedList的构造2.2.常见方法2.3.遍历3.链表结构4.简单实现4.1单向无头不循环链表4.2.双向无头不循环链表5.ArrayList与LinkedList的不同1.LinkedList的特点和存在意义LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了...原创 2022-03-22 15:33:16 · 1965 阅读 · 0 评论 -
链表必刷题之一
1.给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。public ListNode reverseList(ListNode head) { if(head == null) { return null; } if(head.next == null) { return head; } //两个节点以上 ListNode cur = head原创 2022-03-22 16:17:16 · 580 阅读 · 1 评论 -
链表必刷题之二
1.编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 。public ListNode partition(ListNode pHead, int x) { ListNode bs = null; ListNode be = null; ListNode as = null; ListNode ae = null; ListNode cur = pHead; whil原创 2022-03-22 16:40:49 · 443 阅读 · 1 评论 -
数据结构之栈的基本知识与习题
目录1.有关概念2.基本方法和使用场景2.1.方法2.2.使用2.3.应用场景2.3.1.改变元素的序列2.3.2.逆序打印链表2.3.3.oj题括号匹配2.3.4.逆波兰式求值2.3.5.栈的弹出序列3.栈的简单实现(数组实现)4.有关栈的概念区分1.有关概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 ...原创 2022-04-03 22:48:02 · 1224 阅读 · 1 评论 -
数据结构之队列知识与习题练习
目录1.队列概念2.基本方法和简单使用2.1.基本方法2.2.简单使用3.模拟实现与应用场景3.1.各种实现方式分析3.2.简单实现(含有尾指针的单向链表)3.3.应用场景3.3.1.循环队列3.3.2.用栈实现队列3.3.3.用队列实现栈3.3.4.最小元素栈3.3.5.特定时间范围内最近的请求1.队列概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点。入队列:进行插入操作的一端称为...原创 2022-04-04 21:58:47 · 1763 阅读 · 1 评论