在抽象类List中写出三个抽象方法,头插(pushFront),尾插(pushBack)和任意插入(insert)
public class List {
protected int size = 0;
public void insert(int index,int element){
}
public void pushFront(int element){
insert(0,element);
}
public void pushBack(int element){
insert(size,element);
}
}
链表继承自线性表,覆写线性表中的insert抽象方法,并且实现insert方法。
public class LinkedList extends List {
private Node frist = null;
@Override
public void insert(int index, int element) {
Node node = new Node();
node.val = element;
if (index == 0){ //头插
node.next = frist;
frist = node;
}else if(index == size){ //尾
Node last = frist;
while(last.next != null){
last = last.next;
}
last.next = node;
node.next = null;
}else{
Node prv = frist;
for (int i = 0; i < index; i++) {
prv = prv.next;
}
node.next=prv.next;
prv.next = node;
}
size++;
}
}
class Node{
int val;
Node next;
}
链表也同样继承自线性表,覆写线性表中的insert抽象方法,并且实现insert方法。
public class ArrayList extends List {
int[] array = new int[10];
@Override
public void insert(int index, int element) {
for (int i = size; i > index ; i--) {
array[i] = array[i - 1];
}
array[index] = element;
size++;
System.out.println(Arrays.toString(Arrays.copyOfRange(array,0,size)));
}
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.insert(0,1);
list.insert(1,2);
list.insert(2,3);
}
}