/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void reorderList(ListNode head) {
//使用双端队列
Deque<ListNode> deque = new LinkedList<>();
while(head != null){
ListNode newnode = head;
head = head.next;
newnode.next = null;
deque.add(newnode);
}
ListNode ret = null;
ListNode retlist = null;
int index = 0;
if(deque.isEmpty()){
return ;
}
else{
retlist = deque.removeFirst();
ret = retlist;
}
while(!deque.isEmpty()){
if(index%2==0){
//加last
ret.next = deque.removeLast();
ret = ret.next;
}
else{
ret.next = deque.removeFirst();
ret = ret.next;
}
index+=1;
}
head = retlist;
}
}
这道题我使用了一个之前没用过的数据结构deque--双向链表,看到这种一左一右的题。就需要考虑它了。当然这道题用传统的stack也可以做。
同时要注意我代码的前几行,单独分开链表的写法