function Entry(next, data) { this.next = next this.data = data} function Iterator(node) { this.cousor = node this.hasNext = function () { return (this.cousor.next != null); } this.next = function () { var rt = this.cousor.next this.cousor = this.cousor.next return rt.data }} function LinkedList() { this.head = new Entry(null, null) this.size = function () { var size = 0 if (this.head == null) { return size } var p = this.head.next for(; p!=null; p = p.next) size++; return size; } this.clear = function () { this.head = null } this.getNode = function (idx) { var pos = -1; var p = this.head while (p != null && pos < idx) { p = p.next; pos ++; } return p; } this.get = function (idx) { return this.getNode(idx).data } this.add = function (data) { this.insert(this.size(), data) } this.insert = function (idx, data) { var p = this.getNode(idx-1); /**//*注意查询idx-1*/ if (p == null){ return } var node = new Entry(p.next, data) p.next = node } this.remove = function (idx) { var prenode = this.getNode(idx - 1) var node = this.getNode(idx) if (prenode == null || node == null) { return null } prenode.next = node.next return node.data } this.iterator = function () { return new Iterator(this.head) } this.swap = function (a, b) { var av = this.getNode(a) var bv = this.getNode(b) var tmp = av.data av.data = bv.data bv.data = tmp }}