上一個(對象)的引用指向下一個節點對象
頭插:
1.若是要插入的數據沒有結點 先給它裝入一個節點中Node node=new Node();
node.value=0;
2.讓原來的第一個結點成爲新節點的下一個結點node.next=head;
3.更新最新的第一個結點爲新節點 head=node;node
尾插;
1.若是沒在節點中,先裝到節點中
1.5讓新結點的next=null
Node node=new Node(val);構造方法中已經讓 。next=null了
2.找到倒數第一個結點(子問題)找到.next=null的節點
Node last=head;
while(last.next!=null){last=last.next;}
last 就是最後一個結點
3.讓原來的倒數第一個結點的下一個結點爲新節點
last.next=node;ide
尾插分狀況討論1.空鏈表的狀況 就是讓新的節點成爲第一個結點
2.非空(上面方式)對象
頭刪:直接讓head指向head.next,返回headit
尾刪:(分狀況)
若是head爲空,空鏈表沒法刪除
若是head.next爲空,直接讓head指向null(只有一個)
至少兩個:1.找到倒數第二個結點
lastSecond.next.next==null;//就是倒數第二個結點
2.讓倒數第二個結點的next=null;(倒數第二個變爲倒數第一個,作到尾刪)
3.原來最後一個結點由於沒有引用指向而被回收ast
反轉鏈表:
1.不斷地從原來鏈表中取出結點,頭插到一個新鏈表上;
2.須要一個新鏈表,而且是空的鏈表
Node result=null;//result新鏈表的第一個結點的引用
3.遍歷原來的鏈表
Node cur=head;
while(cur!=null){
cur=cur.next;
}
4.把每一個遍歷到的結點(cur)。頭插到新鏈表(result表明)中
11.已經有結點
12.cur.next=result;
13.更新最新的第一個結點result=cur;class