JavaScriptデータ構造2——シングルチェーン表

4361 ワード

以下のコードには以下のいくつかの部分が含まれています.
  • シングルチェーンテーブル初期化
  • シングルチェーンの挿入
  • シングルチェーンテーブルの削除
  • シングルチェーンテーブルの作成(ヘッドセット法)
  • シングルチェーンテーブルの作成(補間)
  • //  
    function Node(data,next) {
        this.data = data;
        this.next = next;
    };
    //  
    function NodeList(node0){
        this.next = node0;
    }
    this.node0;
    this.node1;
    this.node2;
    //       
    node2 = new Node(3,null);
    node1 = new Node(2,node2);
    node0 = new Node(1,node1);
    var list = new NodeList(node0);
    //    
    NodeList.prototype.getNode = function(n) {
        if(n==-1){
                return this;
        }
        else if(n<0){
            return undefined;
        }
        else{
            var elem = this;
            var i = 0;
            do{
                elem = elem.next;
                if(!elem){
                    return undefined;
                }
                i++;
            }while(i<=n);
            return elem;
        }
    };
    //    
    NodeList.prototype.insertNode = function(i,elem){
        if(i<0){
            return undefined;
        }
        else{
            var p = this.getNode(i-1);
            elem.next = p.next;
            p.next = elem;
        }
    }
    //    
    NodeList.prototype.deleteNode = function(i){
        this.getNode(i-1).next = this.getNode(i+1);
        delete this.getNode(i);
    }
    //     (   )
    function createListHead(num){
        var list = new NodeList(null);
        for (var i = 0; i < num; i++) {
            var node = new Node(Math.round(Math.random()*10000),null);
            node.next = list.next;
            list.next = node;
        }
        return list;
    }
    //     (   )
    function createListTail(num){
        var list = new NodeList(null);
        var p = list;
        for (var i = 0; i < num; i++) {
            var node = new Node(Math.round(Math.random()*10000),null);
            p.next = node;
            p = node;
        }
        return list;
    }
    console.info('    '+JSON.stringify(list));
    //       
    console.info('       :
    '+list.getNode(0).data); // console.info(' :
    '+list.getNode(1).data); // list.insertNode(0,new Node(1000,null)); console.info(' 1000, :
    '+ list.getNode(0).data); console.info(' :
    '+list.getNode(1).data); // console.info(' '+JSON.stringify(list)); list.insertNode(1,new Node(2000,null)); console.info(' 2000, :
    '+ list.getNode(1).data); console.info(' :
    '+list.getNode(2).data); console.info(' '+JSON.stringify(list)); list.deleteNode(2); console.info(' , :
    '+list.getNode(2).data); console.info(' '+JSON.stringify(list)); console.info(' ( )
    '+JSON.stringify(createListHead(10))); console.info(' ( )
    '+JSON.stringify(createListTail(10)));
    プリンタ出力は
    現在のチェーンブロック("next"):{data":{next]:{next]:{data]:2、「next」:{data]:{next]:{next]:{data]:{next]:{data]::“““““““”]]]:1取得第二要素を取得する:1000取得第二要素:1000取得第二要素:1000取得第二要素:1現在のチェーンテーブル“next”“next""""""""""""{next"{next"""""""""""""""""""""""""""""""""""""""""""""next":null}2番目の位置に要素2000を挿入し、2番目の要素を取得します.2000は3番目の要素を取得します.1現在のチェーンシート{next”:{data”:1000,next:{data”:2000,“next”:{data”:1,“next”:{data”:2,next:{data ta”:“next”:“next”:“next”:“3”:“next”:“next”:“neta”:”:“next”:“next”:“nett”:”:“next”:““““nett”:”:“Tata”:”:“Tata”ta」:2000、「next」:{「data」:2、「next」:{data”:3、「next」:null}}を作成して、シングルチェーンテーブル(頭挿法){next]:{next]:{data]:2357、「next」:{data]:7764、「next」:{data]:3891、「next」:「{data))):「{tatatata)))))))))):「{datatatatatatatatatata)))))))))))))))))):「{tatatatatatatatatatatatatatatatatatatatatatatata))))))):4948、「next」:{「data」:5293、「next」:{「data」:3913、「next」:null}}}}は、シングルチェーンテーブル(最後の挿法){next]:{data]:8471、「next」:{ダタ“:3457、”next”:{"data":4029、"next":\"data":3596、"next":\":":":"{1630、"、":"、":":":""…………"next":":":":":"":"":""""{next":":"::",",",",next:":",",",",",",",",",",",",",",",next:",",",",",",",",",",",",",",","