和C的语法明显不一样哈。
C的链表里,绝对离不开的是*---指针。
其实JAVA和代码思路和C的完全一样呀,
只是JAVA用数据类型的传值(简单类型,结构)和传引用(数组,对象)来区别指针和非指针。
栈数据和堆数据,其实一样。。。只是看自动化程度的高低以及执行效率的高低互有分别。。
下面代码实现的是前插式,也就是插入和删除节点都是从第一个开始的。
我加了输出语句,显示更明显。
1 class Link 2 { 3 public int iData; 4 public double dData; 5 public Link next; 6 7 public Link(int id, double dd) 8 { 9 iData = id;10 dData = dd;11 }12 public void displayLink()13 {14 System.out.print("{" + iData + ", " + dData + "}");15 }16 }17 18 class LinkList19 {20 private Link first;21 22 public LinkList()23 {24 first = null;25 }26 public boolean isEmpty()27 {28 return (first == null);29 }30 public void insertFirst(int id, double dd)31 {32 Link newLink = new Link(id, dd);33 newLink.next = first;34 first = newLink;35 System.out.println("Insert " + id + ", " + dd + " to LinkList!");36 }37 public Link deleteFirst()38 {39 Link temp = first;40 first = first.next;41 return temp;42 }43 public void displayList()44 {45 System.out.println("List (first-->last): ");46 Link current = first;47 while(current != null)48 {49 current.displayLink();50 current = current.next;51 }52 System.out.println(" ");53 }54 }55 56 public class LinkListApp {57 58 /**59 * @param args60 */61 public static void main(String[] args) {62 LinkList theList = new LinkList();63 64 theList.insertFirst(22, 2.99);65 theList.displayList();66 theList.insertFirst(44, 4.99);67 theList.displayList();68 theList.insertFirst(66, 6.99);69 theList.displayList();70 theList.insertFirst(88, 8.99);71 theList.displayList();72 theList.insertFirst(99, 9.99);73 74 theList.displayList();75 76 while(!theList.isEmpty())77 {78 Link aLink = theList.deleteFirst();79 System.out.println("Deleted!");80 aLink.displayLink();81 System.out.println(" ");82 theList.displayList();83 84 }85 86 }87 88 }
Insert 22, 2.99 to LinkList!
List (first-->last): {22, 2.99} Insert 44, 4.99 to LinkList!List (first-->last): {44, 4.99}{22, 2.99} Insert 66, 6.99 to LinkList!List (first-->last): {66, 6.99}{44, 4.99}{22, 2.99} Insert 88, 8.99 to LinkList!List (first-->last): {88, 8.99}{66, 6.99}{44, 4.99}{22, 2.99} Insert 99, 9.99 to LinkList!List (first-->last): {99, 9.99}{88, 8.99}{66, 6.99}{44, 4.99}{22, 2.99} Deleted!{99, 9.99} List (first-->last): {88, 8.99}{66, 6.99}{44, 4.99}{22, 2.99} Deleted!{88, 8.99} List (first-->last): {66, 6.99}{44, 4.99}{22, 2.99} Deleted!{66, 6.99} List (first-->last): {44, 4.99}{22, 2.99} Deleted!{44, 4.99} List (first-->last): {22, 2.99} Deleted!{22, 2.99} List (first-->last):