题目描述
输入一个链表,反转链表后,输出链表的所有元素。
思想:遍历链表,改用头插法翻转链表。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){
return null;
}
ListNode newHead = null;//这个一定要为空,不能为head,因为要保证翻转后链表最后一个元素的next=null
ListNode pre = head;
ListNode p;
while(pre!=null){
p = pre.next;
pre.next = newHead;
newHead = pre;
pre = p;
}
return newHead;
}
}
</pre><p></p><p style="font-size:14px; line-height:1.6; margin-bottom:20px; color:rgb(51,51,51); font-family:arial,STHeiti,'Microsoft YaHei',宋体">思想:利用栈,先将链表从头到尾放入栈中,然后从新建立新的链表,并输出。</p><p style="font-size:14px; line-height:1.6; margin-bottom:20px; color:rgb(51,51,51); font-family:arial,STHeiti,'Microsoft YaHei',宋体"></p><pre name="code" class="java">import java.util.Stack;
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){
return null;
}
Stack<Integer> stack = new Stack<Integer>();
ListNode p = head;
while(p!=null){
stack.push(p.val);
p = p.next;
}
ListNode first = new ListNode(stack.pop());
ListNode h = first;
System.out.print(" "+ h.val);
while(!stack.empty()){
ListNode node = new ListNode(stack.pop());
h.next = node;
h = h.next;
System.out.print(" "+ h.val);
}
return first;
}
}