今天为大家带来一道题目,来源于牛客网,题目链接反转链表_牛客题霸_牛客网 (nowcoder.com)
思路:使用栈先进后出的思路,做这个题
首先要创建一个栈,把这个链表里面的元素按照顺序放到栈里面,放之前看看头结点是否为空,若为空,返回null
开始入栈,将三个元素都入栈以后,定义一个新的结点等于栈顶元素,把这个元素作为反转后的头结点,然后出栈,直到栈空为止
再把出栈元素放入链表中
完成反转以后令node.next=null,最后返回头结点
这是为了防止形成环
现在上代码
import java.util.*; public class Solution { public ListNode ReverseList(ListNode head) { //采用入栈出栈的方式 //1.首先创建一个栈,并且将元素都放入栈中 Stack<ListNode> stack=new Stack<>(); while(head!=null){ stack.push(head); head=head.next; } if(stack.isEmpty()){ return null; } ListNode node=stack.pop(); //将栈顶元素设为头结点 ListNode ret=node; //出栈 while(!stack.isEmpty()){ ListNode tmpNode=stack.pop(); node.next=tmpNode; node=node.next; } node.next=null;//将头结点下一个元素置为空,防止构成环 return ret; } }
这就是这个题的讲解,欢迎各位大佬前来斧正!!!🚀🚀🚀👀👀👀