链表。。。
目录
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);}
}