链表的建立:
Java中可以使用类来表示链表,每个节点由一个类表示,链表本身由一个包含头节点的类表示。
1、创建节点类:
首先,创建一个节点类,该类包含数据和指向下一个节点的引用。
//创建节点类 //创建一个节点类,该类包含数据和指向下一个节点的引用。 public class Node { int data; Node next; public Node(int data) { this.data=data; this.next=null; } }
2、创建链表类:
创建一个链表类,该类包含链表的操作方法,如添加节点、删除节点、查找节点等。
public class LinkedList { Node head; //添加元素 public void append(int data) { Node newNode=new Node(data); //判断头结点是否为空,为空直接添加到头结点 if(head==null) { head=newNode; }else {//头结点不为空,找到尾结点添加数据 Node current=head; while(current.next!=null) { current=current.next; } current.next=newNode; } } //打印元素 public void display() { Node current=head; //按结点顺序依次打印 while(current!=null) { System.out.print(current.data+"->"); current=current.next; } System.out.println("null"); } //查找元素 public boolean search(int target) { Node current =head; //按结点顺序依次查找,找到返回true,未找到返回false while(current!=null) { if(current.data==target) { return true; } current=current.next; } return false; } //删除元素 public void remove(int target) { //判断删除元素是否为头结点,是的话用头结点的下一元素成为新头结点,原头结点舍弃 if(head!=null&&head.data==target) { head=head.next; return; } //删除元素不为头结点,从头结点往下依次查找 Node current=head; while(current!=null) { //当前结点不为空时,确保当前结点的下一节点有值,判断下一结点是否为目标值 //当下一结点为目标值,将下一结点的内存放的next直接覆盖下一结点,以此丢弃目标结点 if(current.next!=null&¤t.next.data==target) { current.next=current.next.next; return; } current=current.next; } //查找到最后未发现目标元素 System.out.println("没有该元素"); } }
删除结点:
3、链表的使用:
对链表进行插入、打印、删除操作:
public class Test { public static void main(String[] args) { LinkedList linkedList=new LinkedList(); //添加四个结点 linkedList.append(1); linkedList.append(2); linkedList.append(3); linkedList.append(4); linkedList.display();//1->2->3->4->null //查找3这个结点,存在返回true System.out.println(linkedList.search(3)); //删除3这个结点 linkedList.remove(3); linkedList.display();//1->2->4->null } }