时间限制:1秒
空间限制:32768K
热度指数:236041
算法知识视频讲解
题目描述
输入一个链表,反转链表后,输出链表的所有元素
package file;
import java.util.Stack;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Main {
public static ListNode ReverseList(ListNode head) {
if(null==head||null==head.next){
return head;
}
ListNode p=head;
Stack<ListNode> s=new Stack<>();//利用栈先进后出
while(null!=p.next){
s.push(p);
p=p.next;
}
ListNode h=p;
while(!s.isEmpty()){
p.next=s.pop();
p=p.next;
}
p.next=null;
return h;//返回的是h,而不是p
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ListNode head=new ListNode(5);
ListNode q=head;
for(int i=4;i>0;i--){
ListNode p=new ListNode(i);
head.next=p;
head=head.next;
}
head.next=null;
ListNode p=ReverseList(q);
while(null!=p){//null!=p而不是null!=p->next,如果是后者则无法输出最后一个结点的值
System.out.println(p.val);
p=p.next;
}
}
}