链表:逻辑上连续,多个节点采用挂载的方式进行连接,物理上不连续.链表分为单链表和双链表.
一丶单链表
①链表的实现(增删改查):
// 1、无头单向非循环链表实现
public class SingleLinkedList {
//头插法
public void addFirst(int val){
//尾插法
}
public void addLast(int val){
//任意位置插入,第一个数据节点为0号下标
}
public boolean addIndex(int index,int data){
//查找是否包含关键字key是否在单链表当中
}
public boolean contains(int key){
//删除第一次出现关键字为key的节点
}
public void remove(int key){
//删除所有值为key的节点
}
public void removeAllKey(int key){
}
}
②创建节点 :
class Node {
int val;
Node next;
public Node(int val) {
this.val = val;
}
}
具体代码实现:
package singallink;
public class SingalLinkedList {
private int size;
private Node head;
public void addFirst(int val) {
Node node = new Node(val);
if(head == null){
head = node;
}else{
node.next = head;
head = node;
}
size++;
}
public void addIndex(int index,int val){
if(index < 0 || index > size){
System.out.println("add index illegal");
return;
}
if(index == 0){
addFirst(val);
return;
}
Node node = new Node(val);
Node prev = head;
for (int i = 0; i < index - 1; i++) {
prev = prev.next;
}
node.next = prev.next;
prev.next = node;
size++;
}
public void addLast(in