首先代码如下:
- 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指向新结点。