题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
因为最近练习过链表,所以直接想到了反转链表然后遍历插入ArrayList中,一次AC
class Solution{
static Node head = null;
public Node{
int data;
Node next = null;
Node(int data){
this.data = data;
}
}
public void head_insert(int data){
Node cur = Node(data);
if(head == null){
head = cur;
return ;
} else{
cur.next = head;
head = cur;
}
}
public void print() {
Node node = head;
int size = get_length();
while(size >1) {
System.out.print(node.data+"->");
node = node.next;
size --;
if(size ==1) {
System.out.print(node.data);
}
}
System.out.println();
}
public static void main(String[] args){
head_insert(6);
head_insert(5);
head_insert(4);
head_insert(3);
head_insert(2);
head_insert(1);
print();
printListFromTailToHead();
}
public static void printListFromTailToHead() {
ArrayList<Integer> list = new ArrayList<>();
Node pRHead = null;
Node cur = head;
Node pre = null;
while(cur != null){
Node pnext = cur.next;
if(pnext == null){
pRHead = cur;
}
cur.next = pre;
pre = cur;
cur = pnext;
}
head = pRHead;
while(head != null){
list.add(head.data);
head = head.next;
}
for(int i : list) {
System.out.println(i);
}
}
}