js 링크 조작 실현

16102 단어 js링크 조작
링크 와 같은 데이터 구조 에 대해 c 언어 에서 언급 한 적 이 있 는데 링크 는 길이 가 변 할 수 있 는 동적 목록 이다.단 방향 목록 과 양 방향 목록 으로 나 뉜 다.
  • 단 방향 목록: 각 노드 는 자신의 값 이 존재 할 뿐만 아니 라 다음 요 소 를 가리 키 는 지침 도 존재 합 니 다
  • 양 방향 링크: 그의 노드 에 두 개의 지침 이 존재 하고 하 나 는 위의 노드 를 가리 키 는 지침 이 며 하 나 는 다음 노드 를 가리 키 는 지침 이 며 자신의 값 이 존재 합 니 다.
  • //             
    function Node(v) {
         
        this.val = v;
        this.next = null;
    }
    function ArrayList() {
         
        //         
        this.head = new Node(null);
        //       ,               
        this.tail = this.head;
        //             
        this.append = function (v) {
         
            let node = new Node(v);
            this.tail.next = node;
            //  this.tail               
            this.tail = node;
        };
        //   no            
        this.insertAt = function (no, v) {
         
            let node = new Node(v);
            let tempNode = this.head;
            for (let i = 0; i < no; i++) {
         
                if (tempNode.next) {
         
                    tempNode = tempNode.next;
                } else {
         
                    break;
                }
            }
            node.next = tempNode.next;
            tempNode.next = node;
        };
        // no               
        this.removeAt = function (no) {
         
            let tempNode = this.head;
            for (let i = 0; i < no; i++) {
         
                if (tempNode.next) {
         
                    tempNode = tempNode.next;
                } else {
         
                    break;
                }
            }
            //          node2
            let node2 = tempNode.next;
            if (node2) {
         
                //     
                tempNode.next = node2.next;
                if (node2.next == null) {
         
                    //         next null                       
                    this.tail = tempNode;
                }
            }
        };
    }
    function Iterator(arrayList) {
         
        //         
        this.point = arrayList.head;
        //                ,                   true,    false
        this.hasNext = function () {
         
            if (this.point.next) {
         
                this.point = this.point.next;
                return true;
            } else {
         
                return false;
            }
        };
        //          
        this.next = function () {
         
            return this.point.val;
        }
    }
    var arry = new ArrayList();
    arry.append(1);
    arry.append(2);
    arry.append(3);
    arry.insertAt(1, 8);
    arry.insertAt(0, 9);
    arry.insertAt(100, 100);
    arry.insertAt(1000, 1000);
    arry.insertAt(1, 200);
    arry.insertAt(200, 2000);
    iterator = new Iterator(arry);
    while (iterator.hasNext()) {
         
        document.write(iterator.next());
        document.write('
    '
    ); }

    좋은 웹페이지 즐겨찾기