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

链表相关的知识以及算法题

一.链表介绍

单向链表
简介

给定一个头结点,只能通过获取当前节点的值,以及内部保存了下一个节点


数据结构设计代码
//链表public static class Node{public int value;public Node next;public Node(int data){value=data;}}
双向链表
简介

给定一个头结点,每个节点可以保存自己当前的值以及下一个节点的数据以及上一个节点的数据
比如头节点保存了下一个节点的数据以及上一个节点也就是null

数据结构设计代码
//双向链表public static class DoubleNode{public int value;public DoubleNode last;public DoubleNode next;public DoubleNode(int data){value=data;}}

二.链表相关的算法题

反转链表
//反转链表
//我们需要将1 2 3 4 5...重新规划之间的指向,同时返回新的头节点也就是当前的尾节点
//首先,我们有头节点,也就是说我们需要从头开始一个一个的换
//最基础的1和2这里,我们需要一个数记录2 之后改变1的指向
//这时候旧链表的头就变为第二个数了
//根据上面的步骤我们可以设置
//next pre均为null, pre为要返回的head 那么首先next赋值head的next
//head的next指向改为pre
//pre改为head
//head改为nextpublic static Node reverseLinkedList(Node head){//1->2->3->4->5->6//简化的说//  pre  head//  pre->1    2 3 4 5 6//       pre head//要变成<-1    2 3 4 5 6 hread//null<-1//null<-1<-2  <-3...//从头开始 这个1与2先断,Node pre=null;Node next=null;while (head!=null){//1.保存一下head的next//2.head的next应该变成pre//3.pre和head 先后换新值next=head.next;head.next=pre;pre=head;head=next;}return pre;}
反转双向链表
//反转双向链表
//我们画图看一下原来的链表 1-2-3-4-5
//要反转链表,我们先记录一下head的位置
//我们本来是1右边指的是next 左边指的是pre
//现在想要变成左边next 右边pre
//所以next赋值,head的右边next变为pre 左边的last变为next
//pre赋值head head赋值nextpublic static DoubleNode reverseDoubleList(DoubleNode head){DoubleNode pre=null;DoubleNode next=null;while (head!=null){// pre  head// null-  1-2-3-4next=head.next;head.last=next;head.next=pre;pre=head;head=next;}return pre;}
删除链表中某个值
 //删除链表中某个值//首先要判断head是否为num 如果是那head=head的next//直到遍历出来不为num的head 之后设置pre先前合格的节点和cur当前测试的节点
//继续判读
//之后看cur是否为num
//不是,则pre往下走,next也往下走
//是,则将cur的next变为next的next 之后重复该过程
//下面的循环里面讲pre和cur均赋值为head了
//也可以将cur替换为pre.next开始循环public static Node removeValue(Node head,int num){while (head!=null){if (num!= head.value){break;}head=head.next;}//head就是要返回的head了,但是后面的相关value还没有处理Node pre=head;Node cur=head;//从头开始//1->2->3->4->5//如果符合,那么pre=cur cur=cur.next//如果不符合,那么pre.next=cur.next,cur=cur.nextwhile (cur!=null){if (cur.value==num){pre.next=cur.next;}else {pre=cur;}cur=cur.next;}return head;}

http://www.dtcms.com/a/478175.html

相关文章:

  • 模板网站建站步骤微信公众号和小程序的区别
  • Shell 使用指南
  • 重庆网站seo服务没效果
  • 开源项目重构我们应该怎么做-以 SQL 血缘系统开源项目为例
  • Sora2:AIGC的技术革命与生态重构
  • Modbus RTU 数据结构(发送和返回/读/写)
  • Nginx IP 透传
  • 海外IP的主要应用业务
  • 门户网站建设工序做微信网站要多少钱
  • 南阳网站优化费用推进网站 集约化建设
  • 算法训练之BFS实现FloodFill算法
  • Typescript - 枚举类型 enum,详细介绍与使用教程(快速入门)
  • 机器视觉2D贴合引导项目从哪里入手,案例知识分享
  • 家庭烹饪用油选择
  • 「工具设计」JS字段信息加密解密工具设计
  • 注意力机制-10.1.3注意力可视化
  • 网站维护公司苏州网站推广优化
  • Codeforces Educational 183(ABCD)
  • 为什么建设网站要年年交钱石家庄最新今天消息
  • 2025年语音识别(ASR)与语音合成(TTS)技术趋势分析对比
  • TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.msi
  • 鸿蒙NEXT应用接入快捷栏:一键直达,提升用户体验
  • 前端接EXCEL
  • 深圳企业网站建设推荐公司网站开发的方法
  • 网站建设 价格wordpress管理员改为投稿者
  • 2025程序综合实践第三次DFS2
  • 记录一次前端文件缓存问题
  • 深度预测调和网络(DFRN)医疗应用编程路径分析
  • bkhtmltopdf - 高性能 HTML 转 PDF 工具(代替 wkhtmltopdf)
  • OpenCV基础入门2