1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| class Link{ //链节点类 public int iData; public double dData; public Link next; //链表中下一个节点的引用 public Link(int iData, double dData) { super(); this.iData = iData; this.dData = dData; } public void displayLink(){ //显示当前节点的值 System.out.println("iData="+iData+","+"dData"+dData); } }
class LinkList{ private Link first; //只需要第一个节点,从第一个节点出发即可定位所有节点
public LinkList() { //构造函数 this.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 = first.next; //把next设为first return temp; //返回原来的first } public void displayList(){ System.out.println("List(first-->last):"); Link current = first; //用于不断改变位置实现遍历 while(current != null){ current.displayLink(); current = current.next; } } public Link find(int key){ //查找指定的关键字 Link current = first; while(current.iData != key){ if(current.next == null) return null; else current = current.next; } return current; } public Link delete(int key){ //如果current的值匹配,则删除 Link current = first; Link previous = first; //没有匹配到值 while(current.iData != key){ if(current.next == null) return null; else{ //pre和cur向后移动 previous = current; current = current.next; } } //匹配到值 if(current == first) //只有一个first,并匹配,则把first设成first.next first = first.next; else //current的值匹配,则删除,并把cur的next赋给pre的next previous.next = current.next; return current; } }
public class LinkList_demo {
public static void main(String[] args) { // TODO 自动生成的方法存根 LinkList theList = new LinkList(); theList.insertFirst(11, 11.1); theList.insertFirst(22, 22.2); theList.insertFirst(33, 33.3); theList.insertFirst(44, 44.4); theList.insertFirst(55, 55.5); theList.displayList(); Link f = theList.find(22); if(f != null){ System.out.print("找到:"); f.displayLink(); } else System.out.print("没有找到"); Link d = theList.delete(32); if(d != null){ System.out.print("删除:"); d.displayLink(); } else System.out.print("没有找到匹配的删除"); }
}
|