今天为大家带来一道题目,来源于牛客网,题目链接反转链表_牛客题霸_牛客网 (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;
}
}
这就是这个题的讲解,欢迎各位大佬前来斧正!!!🚀🚀🚀👀👀👀