java实现链表的反转
摘要
最近笔试一家公司,其中一道题目:如何用java实现链表的反转,如:{a,b,c,d}反转后变为:{d,c,b,a},只能操作一个链表。 当时不晓得怎么做。还以为使用栈来实现。图样图森破。
public class Node { private Node next; private String value; public Node(String value){ this.value=value; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public static void main(String[] args) { Node head=new Node("a"); Node node1=new Node("b"); Node node2=new Node("c"); Node node3=new Node("d"); //初始化链表 head.setNext(node1); node1.setNext(node2); node2.setNext(node3); System.out.println("打印链表反转前:"); reverse(head); //设置head的下一个元素为null,注意:此时head已经成为链表尾部元素。 head.next=null; while(node3!=null){ System.out.print(node3.getValue()); node3=node3.getNext(); if(node3!=null){ System.out.print("->"); } } } /** * 利用迭代循环到链表最后一个元素,然后利用nextNode.setNext(head)把最后一个元素变为 * 第一个元素。 * * @param head */ public static void reverse(Node head){ if(head!=null){ Node nextNode=head.getNext(); if(nextNode!=null){ reverse(nextNode); nextNode.setNext(head); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示