目錄
5.1 鏈表的結點
5.2 插入
5.3 鏈表長度
5.4 查找
5.5 指定位置刪除
5.6 代碼
5.1 鏈表的結點
一個結點包括:值和指向下一個結點的指針。
package com.qcby.鏈表;public class Node {int value;Node next;public Node(int val){value=val;}@Overridepublic String toString() {return "Node [value="+value+",next="+next+"]";}}
5.2 插入
分為尾插和頭插。
尾插和頭插法都分為兩種情況。
5.3 鏈表長度
遍歷數組,記錄節點個數即可。
5.4 查找
遍歷鏈表,如果某一個節點的值等于要查找的值,則查找成功;否則查找失敗。
5.5 指定位置刪除
首先判斷刪除的位置合不合法。如果不合法,則無法刪除。
合法,則刪除分為兩種情況:第一種是刪除頭結點;第2種是刪除其他位置。
如果是刪頭結點,直接讓head等于head.next。如果是其他,則先遍歷鏈表(用到pre 和 index,pre 是index的前一個結點),找到要刪除的位置,令pre.next=index.next。
5.6 代碼
package com.qcby.鏈表;public class LinkList {Node head=null;//尾插法public void insert(int value) {Node node=new Node(value);if(head==null) {head=node;return;}//找到最后Node index=head;while(index.next!=null) {index=index.next;}//插入index.next=node;}//頭插法public void insertHead(int value) {Node node=new Node(value);if(head==null) {head=node;return;}node.next=head;head=node;}//鏈表長度public int getLen() {Node index=head;int count=0;while(index!=null) {count++;index=index.next;}return count;}//鏈表中查找數據public int search(int num) {Node index=head;int count=0;while(index!=null) {if(index.value==num) {return count;}else {index=index.next;}count++;}return -1;}//指定位置刪除public void delete(int position) {//合法if(position<0||position>=getLen()) {System.out.println("刪除位置不合法!");}//刪頭if(position==0) {head=head.next;}else {//先找到位置int count=0;Node index=head;Node pre=null;while(count!=position) {pre=index;index=index.next;count++;}pre.next=index.next;}}@Overridepublic String toString() {String res="[ ";Node index=head;while(index!=null) {res=res+index.value+" ";index=index.next;}res=res+"]";return res;}}
package com.qcby.鏈表;public class Test {public static void main(String[] args) {
// Node node1=new Node(9);
// Node node2=new Node(5);
// Node node3=new Node(90);
// Node node4=new Node(0);
// node1.next=node2;
// node2.next=node3;
// node3.next=node4;
// System.out.println(node1);LinkList list=new LinkList();list.insertHead(0);list.insertHead(10);list.insertHead(2);list.insertHead(8);list.insertHead(6);System.out.println(list);System.out.println(list.getLen());System.out.println(list.search(100));System.out.println(list.search(2));list.delete(2);System.out.println(list);}
}