当前位置: 首页 > wzjs >正文

品牌网站 响应式网站视频营销成功的案例

品牌网站 响应式网站,视频营销成功的案例,网络工程师考几科,wordpress用户注册插件下载📌 深入理解LinkedList与链表:从原理到实战应用 🌟 引言 在Java集合框架中,LinkedList和ArrayList是最常用的两种列表结构。它们各有优劣,适用于不同的场景。本文将带你深入探索LinkedList的底层实现——链表&#x…

📌 深入理解LinkedList与链表:从原理到实战应用

🌟 引言

在Java集合框架中,LinkedListArrayList是最常用的两种列表结构。它们各有优劣,适用于不同的场景。本文将带你深入探索LinkedList的底层实现——链表,并通过丰富的代码示例和对比分析,帮助你全面掌握其特性和应用场景。
在这里插入图片描述


📚 1. ArrayList的缺陷

ArrayList底层基于动态数组实现,虽然支持高效的随机访问(时间复杂度为O(1)),但在任意位置插入或删除元素时,需要搬移后续元素,导致时间复杂度为O(n)。例如:

ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 添加到末尾,O(1)
list.add(0, 0); // 插入到头部,O(n)

缺陷总结

  • 插入/删除效率低(尤其是头部或中间位置)。
  • 扩容时需要拷贝数据,额外开销大。

🔗 2. 链表:LinkedList的底层结构

2.1 链表的概念

链表是一种物理存储非连续的数据结构,通过节点的引用(指针)实现逻辑上的连续性。
在这里插入图片描述
特点

  • 节点包含数据域和指针域。
  • 物理上不连续,逻辑上连续。

2.2 链表的分类

链表有多种结构组合,常见的两种:

  1. 无头单向非循环链表:结构简单,常用于面试题

  2. 无头双向循环链表:Java中LinkedList的底层实现。

双向链表节点定义

class Node {int val;Node prev;Node next;
}

⚙️ 3. LinkedList的模拟实现

以下是一个简化版的双向链表实现:

public class MyLinkedList {private Node head;private Node tail;private int size;// 头插法public void addFirst(int data) {Node newNode = new Node(data);if (head == null) {head = tail = newNode;} else {newNode.next = head;head.prev = newNode;head = newNode;}size++;}// 删除指定值的节点public void remove(int key) {Node cur = head;while (cur != null) {if (cur.val == key) {if (cur == head) {head = head.next;if (head != null) head.prev = null;} else {cur.prev.next = cur.next;if (cur.next != null) cur.next.prev = cur.prev;}size--;return;}cur = cur.next;}}
}

🛠️ 4. LinkedList的使用

4.1 Java集合框架部分:LinkedList继承体系(思维导图)

Iterable
Collection
List
Queue
LinkedList
Deque
AbstractSequentialList
AbstractList
Serializable
Cloneable

4.2 常用方法

在这里插入图片描述

4.3 遍历方式

// 1. for-each循环
for (int num : list) {System.out.print(num + " ");
}// 2. 迭代器
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {System.out.print(it.next() + " ");
}// 3. 反向迭代器
Iterator<Integer> rit = list.descendingIterator();
while (rit.hasNext()) {System.out.print(rit.next() + " ");
}

🧩 5. 经典链表OJ题解析

5.1 反转链表

题目:反转一个单链表。
代码

public ListNode reverseList(ListNode head) {ListNode prev = null;ListNode cur = head;while (cur != null) {ListNode next = cur.next;cur.next = prev;prev = cur;cur = next;}return prev;
}

5.2 判断链表是否有环

快慢指针法

public boolean hasCycle(ListNode head) {ListNode slow = head, fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) return true;}return false;
}

📊 6. ArrayList vs LinkedList

对比维度ArrayListLinkedList
底层结构动态数组双向链表
随机访问O(1)O(n)
头插/删效率O(n)O(1)
内存占用连续空间,可能浪费分散存储,无浪费
适用场景频繁访问+少量修改频繁插入/删除

选择建议

  • 需要快速随机访问?选ArrayList
  • 频繁在头部或中间插入/删除?选LinkedList

💡 7.记忆技巧

Iterable是根源,
Collection分三派(List/Queue/Set),
List有三各不同:
数组实现ArrayList,
链表实现LinkedList,
线程安全Vector顶。标记接口要记清:
Serializable可序列,
Cloneable能复制,
RandomAccess随机快。

🎯 总结

  • 链表通过节点引用实现逻辑连续,适合频繁修改的场景。
  • LinkedList在Java中基于双向链表实现,提供了高效的插入/删除操作。
  • 理解链表的核心在于掌握指针操作和边界条件处理。

通过本文的学习,相信你对链表和LinkedList有了更深入的理解!快去LeetCode上挑战更多链表题目吧!

💬 互动话题:你在项目中用过LinkedList吗?遇到过哪些坑?欢迎评论区分享!

在这里插入图片描述


文章转载自:

http://dCQvp0Bk.ggnrt.cn
http://mkhJxuMD.ggnrt.cn
http://KWpVa3Gh.ggnrt.cn
http://mDTgSNTs.ggnrt.cn
http://GFQZJgVs.ggnrt.cn
http://BETyiob6.ggnrt.cn
http://7zjlv5vG.ggnrt.cn
http://10Twv4rc.ggnrt.cn
http://S8Ky6tKF.ggnrt.cn
http://2MWQc3QD.ggnrt.cn
http://9V9NCPWH.ggnrt.cn
http://ifUywVOZ.ggnrt.cn
http://Ih8PIhym.ggnrt.cn
http://Pb3DNQxn.ggnrt.cn
http://qrZPvlXA.ggnrt.cn
http://0UkUzdh2.ggnrt.cn
http://2njsTAln.ggnrt.cn
http://mfFN6BHM.ggnrt.cn
http://oppIZQqz.ggnrt.cn
http://dA5gy0W1.ggnrt.cn
http://5i0lktsV.ggnrt.cn
http://5A6c4aAy.ggnrt.cn
http://xCBjM94u.ggnrt.cn
http://Sb0fPrTe.ggnrt.cn
http://58MsKe45.ggnrt.cn
http://qTuQDzRG.ggnrt.cn
http://5vnWKZJx.ggnrt.cn
http://iUHw5X1G.ggnrt.cn
http://gkY7xHwQ.ggnrt.cn
http://w5kXA2pi.ggnrt.cn
http://www.dtcms.com/wzjs/699397.html

相关文章:

  • 泉州比较好的网站开发建设公司seo搜索引擎优化就业指导
  • 太原网站建设推广服务wordpress学习教程
  • 做破解软件网站赚广告费游戏网站模板免费下载
  • 秦皇岛网站开发报价济南网站建设 小程序
  • 棋牌 彩票网站建设手机网站开发注意的问题
  • 东莞网站建设网站东莞网站设计制作
  • 谷歌怎么推广自己的网站手机制作报价单app
  • 深圳市城乡建设部网站首页在线视频下载网站如何做
  • js网站跳转代码ui网页设计技巧
  • 大同建设银行保安招聘网站做网站服务器什么配置
  • 如何屏蔽网站ip永久免费的财务软件
  • 新手可以自己学做网站设计吗怎么创建网页的快捷方式
  • 网站制作需要多少钱新闻网站推广软文代发
  • 建各企业网站多少钱做打折网站如何
  • 可以做投票的网站网站设计专业公司
  • 深圳做网站(官网)手机微信客户端网站建设
  • 建立网站平台网页设计提升班有哪些
  • 怎么在网上接网站建设前端做网站需要
  • 一般请人做网站和app多少钱wordpress title标签
  • 手机网站建站价格成都网站登记备案查询
  • 建设网站上传代码网站功能建设模块
  • 上海网站建设公司哪个好北京互联网公司排名
  • 陕西省交通建设公司网站wordpress页面怎么切换
  • wordpress php推送惠州seo关键字优化
  • 珠海做网站那家好huntt wordpress主题
  • 请问如何做网站火车头发布模块wordpress5.0
  • 网站概要设计模板网页设计怎么把图片放在指定位置
  • 济南网站建设套餐赣州市建设工程造价管理网站
  • 网站建设实训心得php黑糖主题3.0wordpress
  • 河南省濮阳市建设局网站做佣金单网站