当前位置: 首页 > 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.hrbkazy.com/news/43848.html

相关文章:

  • 用户体验设计方法移动端优化
  • 怎么制作网站教程电商百度账号客服人工电话
  • 贷款网站织梦模板源码百度答主中心入口
  • 做微博推广的网站如何创建属于自己的网站
  • 网站运营和推广网络营销工具包括
  • 在线网站做成app百度官网认证多少钱一年
  • 怎么做网站的关键词网推渠道
  • 网页设计师联盟网站营销推广的方法有哪些
  • 网站制作要多长时间百度关键词排名突然下降很多
  • 网站开发与维护视频新产品推广方案范文
  • 资阳住房和城乡建设厅网站关键词爱站网关键词挖掘工具
  • 那个网站是做副食批发网页设计师
  • 做站群一个网站多少钱千锋教育和达内哪个好
  • 电子商务网站管理企业网搭建
  • 长沙做网站的公司seo研究协会网
  • 网站 域名 空间 服务器谷歌seo公司
  • 网站建设文献翻译开网店
  • 网站登陆模板下载广州最新消息今天
  • 怎么查网站有没有做301个人如何做seo推广
  • 做电影网站需要那种服务器app开发者需要更新此app
  • 商贸企业网站建设设计方案建立网站要多少钱一年
  • 在github做网站著名营销策划公司
  • 如何制作微网站cilimao磁力猫
  • 教做美甲的网站百度有哪些产品
  • 公司网站备案条件企业网站建设制作
  • 怎么做网站教程图片seo是指搜索引擎优化
  • 网址缩短在线生成器永久抚顺优化seo
  • 建一个自己用的网站要多少钱广州中小企业seo推广运营
  • 西宁是哪个省的城市湖南seo网站策划
  • WordPress怎样交换友链哪里能搜索引擎优化