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

4.LinkedList的模拟实现:

LinkedList的底层是一个不带头的双向链表。
不带头双向链表中的每一个节点有三个域:值域,上一个节点的域,下一个节点的域。

不带头双向链表的实现:

public class Mylinkdelist{//定义一个内部类(节点)static class ListNode{int val;//值域ListNode prev;//指向前一个节点ListNode next;//指向后一个节点public ListNode(int val){//构造方法this.val=val;}}ListNode head=null;//定义一个头结点ListNode last=null;//定义一个尾链表public void addIndex(int Index,int data){//从指定位置插入int len=size();if(Index<0||Index>len){return ;}ListNode node = new ListNode (data); if(Index==0){addFirst(data);return ;}if(Index==len){addLast(data);return;}ListNode cur=head;int count=0;while(count!=Index){count++;cur=cur.next;}node.next=cur;node.prev=cur.prev;cur.prev.next=node;cur.prev=node;}public void addLast(int key){//尾插ListNode node=new ListNode(key);if(last==null){head=last=noed;}else{last.next=node;node.prev=last;last=node;}}public void addFirst(int key){//头插ListNode node=new ListNode(key);if(head==null){head=last=node;}else{node.next=head;head.prev=node;head=node;}}  public void diaplay(){//把双向链表展示出来ListNode cur=head;while(cur!=null){//用cur遍历链表System.out.print(cur.val+" ");cur=cur.next;}}public int size(){//求链表的长度ListNode cur=head;int count=0;while(cur!=null){cur=cur.next;count++:}return count;}public boolean contains(int key){//查找ListNode cur=head;while(cur!=null){if(cur.val==key){return true;}cur=cur.next;}return false;}public void remove(int key){//删除节点ListNode 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){last=cur;}cur.next.prev=cur.prev;}}cur=cur.next;}}public void clear(){//清除链表ListNode cur=head;while(cur!=null){ListNode curN=cur.next;cur.next=null;cur.prev=null;cur=curN;}head=last=null;}
}

相关文章:

  • 懒人一键搭建符号执行环境V5K3
  • 【C++】——入门基础(一)
  • 详解Windows(七)——更新管理
  • dmncdm达梦新云缓存数据库主从集群安装部署详细步骤说明
  • 数据结构*链表- LinkedList
  • 多模态知识图谱:重构大模型RAG效能新边界
  • 【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)
  • 【MQ篇】RabbitMQ初体验!
  • 网络设备智能巡检系统-MCP案例总结
  • 网易云音乐如何修改缓存地址到D盘
  • 【自然语言处理与大模型】如何知道自己部署的模型的最大并行访问数呢?
  • 再见 Smartdaili,你好 Decodo!
  • 2025年阿里云云计算ACP高级工程师认证模拟试题(附答案解析)
  • DeepSeek系列(5):助力数据分析
  • 黑马商城(六)RabbitMQ
  • 利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化
  • python+selenium+pytest自动化测试chrome driver版本下载
  • 用Qt和deepseek创建自己的问答系统
  • Oracle DBA 高效运维指南:高频实用 SQL 大全
  • CentOS笔记本合上盖子不休眠
  • 成为中国骑手孵化器,上海环球马术冠军赛是最好的历练舞台
  • 中央气象台:未来三天北方地区有大风沙尘,江南等地有强降水
  • 安徽安庆市委书记张祥安调研假日经济和旅游安全工作
  • 加拿大总理将赴美同特朗普会晤,重点谈贸易压力
  • 几天洗一次头发最好?终于有答案了...
  • 中国固体火箭发动机领域杰出专家赵殿礼逝世,享年92岁