输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例一:输入:head = [1,3,2] 输出:[2,3,1]
借助栈实现,代码如下:
Java实现:
class Solution {
public int[] reversePrint(ListNode head) {
Stack stack = new Stack();
ListNode temp = head;
//将链表的结点一个个存入栈中
while(temp!=null){
stack.push(temp);
temp = temp.next;
}
//取出的顺序正好是倒序的
int size = stack.size();
int[] res = new int[size];
for(int i = 0;i
反转链表;同LeeDCode206
题目描述:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例一:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
这个实现的方式跟上面那道题相似,都是借助栈来实现
Java实现:
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null) return head;
Stack stack = new Stack();
ListNode temp = head;
//将链表的结点一个个存入栈中
while(temp!=null){
stack.push(temp);
temp = temp.next;
}
ListNode resHead = stack.pop();
ListNode tailNode = resHead;
while(!stack.isEmpty()){
ListNode tt = stack.pop();
tailNode.next = tt;
tailNode = tt; //这个地方的tailNode一定要后移,很容易出错
}
tailNode.next = null;
return resHead;
}
}


![[剑指offer] 06.从头到尾打印链表& 24.反转链表 [剑指offer] 06.从头到尾打印链表& 24.反转链表](http://www.mshxw.com/aiimages/31/867499.png)
