一、链表
1) 主要分为单向链表和双向链表,下面用代码实现一下:
//单向链表
public class Node {
public int value;
public Node next;
public Node(int data) {
value = data;
}
}
//双向链表
public class DoubleNode {
public int value;
public DoubleNode last;
public DoubleNode next;
public DoubleNode(int data) {
value = data;
}
}
2)关于一些链表的简单题目
链表反转
//反转单链表
public static Node reverseLinkedList(Node head){
Node pre = null;
Node next = null;
while(head !=null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
//反转双向链表
public static DoubleNode reverseDoubleList(DoubleNode head){
DoubleNode pre = null;
DoubleNode next = null;
while(head != null){
next = head.next;
head.next = pre;
head.last = next;
pre = head;
head = next;
}
return pre;
}
去除给定值
public Node deleteNum(Node head,int num){
//判断头结点是不是等于给定值
while(head != null){
if (head.value != num){
break;
}
head = head.next;
}
//head的头来到不等于num的位置
//pre 上一个不等于num的位置,cur 移动head
Node pre = head;
Node cur = head;
while (cur.next != null){
if (cur.value == num){
pre.next = cur.next;
}
if (cur.value != num){
pre = cur;
}
cur = cur.next;
}
return head;
}