解题技巧:
- 借助ArrayList的 indexOf方法,可以获取到某个元素的下标位置;
- ArrayList指定在某个位置插入某个元素: list.add(index,element);
- ArrayList指定删除某位置的元素: list.remove(index);
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int head = sc.nextInt();
List<Integer> linkedlist = new ArrayList<>();
linkedlist.add(head);
for (int i = 0; i < n - 1; i ++) {
int next = sc.nextInt();
int pre = sc.nextInt();
// 加入到某个节点的下一个位置
linkedlist.add(linkedlist.indexOf(pre) + 1, next);
}
int remove = sc.nextInt();
// 删除 根据元素下标删除。
linkedlist.remove(linkedlist.indexOf(remove));
for (int i : linkedlist) {
System.out.print(i + " ");
}
System.out.println();
}
// String str = in.nextLine();
// String[] strArray = str.split(" ");
// int length = Integer.parseInt(strArray[0]);
// int node = Integer.parseInt(strArray[1]);
// int deleteElement = Integer.parseInt(strArray[strArray.length - 1]);
// Map<Integer, List<Integer>> map = new HashMap();
// // 将同一个起点的放入一个list
// for (int i = 2; i < strArray.length - 1; i++) {
// // 第一个是后节点
// int value = Integer.parseInt(strArray[i]);
// i++;
// // 第二个是前节点
// int key = Integer.parseInt(strArray[i]);
// List<Integer> list = map.get(key) == null ? new ArrayList() : map.get(key);
// list.add(value);
// map.put(key, list);
// }
// // 虚拟头节点
// ListNode temp = new ListNode(-1);
// ListNode head = temp;
// // 构建链表
// for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
// List<Integer> list = entry.getValue();
// // 如果是头节点 先加入key
// if (entry.getKey() == node) {
// head.next = new ListNode(node);
// head = head.next;
// }
// // list中的值为: 3--4--5,5为最后要插入到key节点之后的, 所以逆序插入
// for (int i = list.size() - 1; i >= 0; i--) {
// head.next = new ListNode(list.get(i));
// head = head.next;
// }
// }
// ListNode res = temp;
// // 删除操作:
// if (res.next.val == deleteElement) {
// res.next = res.next.next;
// res = res.next;
// } else {
// // 删除的不是头节点
// while (res != null && res.next != null) {
// if (res.next.val == deleteElement) {
// res.next = res.next.next;
// }
// res = res.next;
// }
// }
// assert temp != null;
// while (temp.next != null) {
// System.out.print(temp.next.val + " ");
// temp = temp.next;
// }
}
}
/*class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
int getVal() {
return val;
}
}*/