链表的构造:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
1. HashMap判别是否包含
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
ListNode cu1 = pHead1;
ListNode cu2 = pHead2;
HashMap<ListNode, Integer>hashMap = new HashMap<ListNode,Integer>();
while(cu1 != null) {
hashMap.put(cu1, null);
cu1 = cu1.next;
}
while(cu2 != null) {
if(hashMap.containsKey(cu2))
return cu2;
cu2 = cu2.next;
}
return null;
}
2.链表可以采用List
public static void main(String[] args) {
Scanner re = new Scanner(System.in);
while(re.hasNext()) {
int num = Integer.parseInt(re.nextLine());
String values[] = re.nextLine().split(" ");
int k = Integer.parseInt(re.nextLine());
List list = addNum(values);
if(k!=0)
System.out.println(list.get(num-k));
else System.out.println(0);
}
}
private static List addNum(String[] values) {
// TODO Auto-generated method stub
List list = new ArrayList();
for(int i = 0; i < values.length; i++) {
list.add(Integer.parseInt(values[i]));
}
return list;
}
3.反转链表
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null) return null;
ListNode p = head;
ListNode q = null;
ListNode r = null;
while(p!=null){
q = p.next;
p.next = r;
r = p;
p = q;
}
return r;
}
}