实现链表,是一个对于java新手来说,这是一个非常考验自己的逻辑结构的一个小项目,同学们都可以试一下,对自己的提升有很大的帮助。
视频资源是我一直推荐的尚学堂高琦的java300集:https://www.bilibili.com/video/BV1dW411Q7mY?p=145
选择Linkedlist的那一块有详细的解释,视频是免费观看的,这个大家不用担心。
这里是源代码 :
public class linkedListTest1 <E>{
private Node first;
private Node last;
private int size;
public Object get(int index){
cherkRange(index);
Node temp = getNode(index);
return temp!=null?temp.element:null;
}
private void cherkRange(int index){
if (index<0||index>size-1){
throw new RuntimeException("索引数字不合法"+index); //抛出异常
}
}
public void add(E e) {
Node node = new Node(e);
if (first==null) {
node.preious = node;
node.next = null;
first = node;
last = node;
}else {
node.preious = last;
node.next = null;
last.next = node;
last = node;
}
size++;
}
public void add (int index,E e){
cherkRange( index);
Node Newnode = new Node(e);
Node temp = getNode(index);
if(temp!=null){
Node up = temp.preious;
up.next = Newnode;
Newnode.preious = up;
temp.preious = Newnode;
Newnode.next = temp;
}
size++;
}
private Node getNode(int index){
cherkRange( index);
Node temp = first;
if(index<=(size>>1)){
for (int i = 0 ;i < index ; i++ ){
temp = temp.next;
}
}else {
temp = last;
for (int i = size - 1; i > index; i--) {
temp = temp.preious;
}
}
return temp;
}
//index为对应的索引值.
public void remove(int index){
cherkRange( index);
Node tempe = getNode(index);
if(tempe!= null){
Node up = tempe.preious;
Node down = tempe.next;
System.out.println(up.element);
System.out.println(down.element);
System.out.println("12345554566");
if(down!=null){
up.next = down;
}
if(up!=null){
down.preious = up;
}
if(index==0){
first = down;
}
if(index==size-1){
last = up;
}
size--;
}
}
public String toString() {
Node temp = first;
while (temp!= null) {
System.out.println(temp.element);
temp = temp.next;
}
return "好好";
}
public static void main(String[] args) {
linkedListTest1<String> list = new linkedListTest1();
list.add("a");
list.add("b");
list.add("c");
System.out.println(list);
System.out.println(list.get(0));
list.remove(0);
System.out.println(list);
list.add(1,"123");
System.out.println(list);
}
}