当前位置: 代码迷 >> J2SE >> 关于Java单链表的不解
  详细解决方案

关于Java单链表的不解

热度:141   发布时间:2016-04-24 00:19:59.0
关于Java单链表的疑惑
首先代码如下:
Java code
package com.dbstructor.oop2;class Link {    public int iData;    public double dData;    public Link next;         public Link(int id, double dd){        iData = id;        dData = id;    }        public void displayLink(){        System.out.print("{" + iData + "," + dData + "}");    }}class LinkList {    private Link first;    public LinkList(){        first = null;    }        public boolean isEmpty(){        return (first == null);    }        // 插入链接点    public void insertFirst(int id, double dd){        Link newLink = new Link(id, dd);        newLink.next = first;        first = newLink;    }        // 删除链接点    public Link deleteFirst(){        Link temp = first;        first = first.next;        return temp;            }        public void displayList(){        System.out.print("List (first-->last): ");        Link current = first;        while(current != null){            current.displayLink();            current = current.next;        }        System.out.println("");    }}public class LinkListApp {    public static void main(String[] args) {        LinkList theList = new LinkList();        theList.insertFirst(22, 2.99);        theList.insertFirst(44, 4.99);        theList.insertFirst(66, 6.99);        theList.insertFirst(88, 8.99);                theList.displayList();                while(!theList.isEmpty()){            Link aLink = theList.deleteFirst();            System.out.print("Deleted ");            aLink.displayLink();            System.out.println("");        }                theList.displayList();    }}


------解决方案--------------------
链表的一个节点 包含一个值和一个指向下个节点的引用 一个链表首先有个first指向第一个节点 你要insertFirst的时候 首先就要先new一个节点:
Link newLink = new Link(id, dd)
然后 把这个新new节点所持有的引用指向原来的第一个节点: 
newLink.next = first;
然后把first这个引用指向新new的节点 
first = newLink; 
就是这样的

------解决方案--------------------
每个链表都有一个first
它也是一个结点类型的。
当然我们也可以把它理解为整个链表的一个指针。
它标识了链表的存在。
在插入操作中:
因为都是在起始位置上作插入操作的。所以first总是会指向新的结点,当然要使新的结点插入到整个链表中还要做新的结点的next指向原来first的所指向的那个结点,
每插入一点新的结点都有这样的操作。这样链表就不断的增长。


------解决方案--------------------


第一步,新建结点,并用newLink指向新结点。
第二步,新结点的next指向first指向的结点。
第三步,first指向新结点。
  相关解决方案