数据结构与算法(四)链表

来源:互联网 发布:西安软件培训班 编辑:程序博客网 时间:2024/05/22 16:38

链表

类比为一列火车,每个车厢为一个结点,结点包括两个功能,1. 存储结点数据;2. 存储下一个结点的引用 。


链结点:

/* * 链结点,相当于是车厢 */public class Node {//数据域:保存结点里的数据public long data;//结点域==指针域:保存下一个结点的引用public Node next;public Node(long value){this.data=value;}/* * 显示方法 */public void display(){System.out.print(data+" ");}}

链表:

/* * 链表,相当于火车 */public class LinkList {//头结点private Node first;public LinkList(){first=null;}/* * 插入一个结点,在头结点后进行插入 */public void insertFirst(long value){Node node=new Node(value);node.next=first;first=node;}/* * 删除一个结点,在头结点后进行删除 */ public Node deleteFirst(){Node tmp=first;first=tmp.next;return tmp;}/* * 显示方法 */public void display(){Node current=first;while(current!=null){current.display();current=current.next;}System.out.println();}/* * 查找方法 */public Node find(long value){Node current=first;while(current.data!=value){if(current.next==null){return null;}current=current.next;}return current;}/* * 删除方法,根据数据域进行删除 */public Node delete(long value){Node current=first;Node previous=first;while(current.data!=value){if(current.next==null){return null;}previous=current;current=current.next;}if(current==first){first=first.next;}else{previous.next=current.next;}return current;}}


测试:

public class TestLinkList {public static void main(String[] args) {// TODO Auto-generated method stubLinkList linkList=new LinkList();linkList.insertFirst(34);linkList.insertFirst(23);linkList.insertFirst(12);linkList.insertFirst(0);linkList.insertFirst(-1);//linkList.display();//linkList.deleteFirst();////System.out.println();//linkList.display();////Node node=linkList.find(23);//node.display();Node node1=linkList.delete(0);node1.display();System.out.println();linkList.display();}}



0 0