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

深圳英文网站建设去哪家学校网站开发说明书文档

深圳英文网站建设去哪家,学校网站开发说明书文档,公司合法网站域名怎么注册,成都网站建设 致尚文章目录 题目思考实现1. 迭代方式实现链表翻转2. 递归方式实现链表翻转 Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表 题目 LCR 024. 反转链表 思考 翻转链表是一个常见的算法问题&a…

文章目录

  • 题目
  • 思考
  • 实现
    • 1. 迭代方式实现链表翻转
    • 2. 递归方式实现链表翻转

Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表

题目

LCR 024. 反转链表
在这里插入图片描述

思考

翻转链表是一个常见的算法问题,通常用于练习基本的数据结构操作

实现

在 Java 中可以通过迭代和递归两种方式来实现链表的翻转

1. 迭代方式实现链表翻转

  • 使用三个指针prevcurrnextTemp来逐步翻转链表。
    • prev初始化为null,表示新链表的末尾。
    • curr从头节点开始,逐步遍历整个链表。
    • 在遍历过程中,将当前节点的next指向前一个节点,并移动prevcurr到下一个节点。
class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}public class ReverseLinkedList {public static ListNode reverseList(ListNode head) {ListNode prev = null;ListNode curr = head;while (curr != null) {ListNode nextTemp = curr.next; // 保存下一个节点curr.next = prev; // 当前节点的next指向前一个节点prev = curr; // 前一个节点移动到当前节点curr = nextTemp; // 当前节点移动到下一个节点}return prev; // 返回新的头节点}public static void main(String[] args) {// 构建测试链表:1 -> 2 -> 3 -> 4 -> 5ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);head.next.next.next = new ListNode(4);head.next.next.next.next = new ListNode(5);// 翻转链表ListNode reversedHead = reverseList(head);// 打印翻转后的链表ListNode current = reversedHead;while (current != null) {System.out.print(current.val + " ");current = current.next;}}
}

2. 递归方式实现链表翻转

  • 递归地处理链表的剩余部分,直到到达最后一个节点。
  • 在回溯过程中,翻转当前节点和其前一个节点的连接。
  • 最终返回新的头节点。
class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}public class ReverseLinkedList {public static ListNode reverseList(ListNode head) {// 基本情况:如果链表为空或只有一个节点,直接返回头节点if (head == null || head.next == null) {return head;}// 递归翻转剩余的链表ListNode p = reverseList(head.next);// 当前节点的下一个节点指向当前节点head.next.next = head;head.next = null;return p; // 返回新的头节点}public static void main(String[] args) {// 构建测试链表:1 -> 2 -> 3 -> 4 -> 5ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);head.next.next.next = new ListNode(4);head.next.next.next.next = new ListNode(5);// 翻转链表ListNode reversedHead = reverseList(head);// 打印翻转后的链表ListNode current = reversedHead;while (current != null) {System.out.print(current.val + " ");current = current.next;}}
}

这两种方法在不同的场景下都有其优点和适用性。迭代方法通常更容易理解和实现,而递归方法则更具递归思想的优美性。

http://www.yayakq.cn/news/214636/

相关文章:

  • 模板网站与定制网站区别重庆城乡建设信息网官网
  • 河北建设工程招标投标协会网站做网站技术要求怎么写
  • 高端网站设计公司如何设计网站网页设计欣赏作业
  • 合肥定制网站建设网站建设怎么做呢
  • 青海西宁制作网站专业织梦网站会员上传图片
  • 专业网站制作公司采用哪些技术制作网站?需要登陆的网站如何做爬虫
  • 创新的网站建站淘宝网页版登录入口电脑版
  • 开封做网站哪家好陕西省建设网一体化平台
  • 网站建设简讯ui设计与制作
  • 宁夏自治区建设厅网站长春网站设计公司
  • 怎么做跳转流量网站手机设计绘图软件app
  • 网站建站过程分析个人网站 做外贸
  • 游戏网站建设与策划方案wordpress关闭自适应
  • seo优化的网站西安市建设和住房保障局网站
  • diy建站系统昆明网站建设论坛
  • 在线logo优化推广网站推荐
  • 中国石油销售公司网站建设上饶做网站要多少钱
  • 用asp做的大型网站ui培训基地
  • 网站开发招标采购需求wordpress如何更改导航栏的样式
  • 企业商城网站开发腾云网建站
  • 5个免费安全的资源网站destoon 网站搬迁
  • 六盘水住房和城乡建设部网站网站优化公司信息推荐
  • 免费申请网站官网做自己的网站难不难
  • 汽车城网站建设方案手机网络加速器
  • 商城网站标题一级消防工程师考试题库及答案
  • app网站开发者集团网站建设特色
  • 2021建站公司永川建网站
  • 深圳福田做网站公司哪家好顾氏网站建设有限公司怎么样
  • 开网站供免费下载oa系统哪个品牌好
  • 百度搜索网站打开错误深圳互联时空网站优化怎么样