翻转链表

输入一个链表,翻转链表后,输出新链表的表头。

解:

此题,和从尾到头打印链表相似,可以采取相似的方法,采用两个栈,先入栈再出栈,那么元素的出栈顺序就是倒着输出的。代码如下:

Stack stack = new Stack();
ListNode curr = head;
while(curr != null){
     stack.push(curr);
     curr = curr.next;
}
if(!stack.isEmpty()){
     ListNode currs = stack.pop();
     ListNode thead = currs;   //保存表头,最后返回
     while(!stack.isEmpty()){
           currs.next = stack.pop();
           currs = currs.next;
     }
     currs.next = null;
     return thead;
}
return null;

看了一些别解法,有一种解法我很喜欢,也很巧妙;在原有链表基础上就行操作,并没有额外使用内存空间,

你可能感兴趣的:(数据结构)