JavaScript与数据结构

JavaScript数据结构1——顺序表

2017-03-15  本文已影响0人  RichardW

顺序表是数据结构里面的一个重要组成部分,一般情况下用数组来实现,和c语言不同的是,js能自动回收内存,但是js得全局变量可以用delete方法删除。

//定义线性表的基本元素
function ElemType(data) {
    this.elem = data;
}
//定义线性表
function SqlList(num) {
    this.data = new Array(num);
    this.length = num;
}
//获取元素的方法
SqlList.prototype.getElem = function(i) {
    if(i<0&&(this.length-1)<i){
        return undefined;
    }else{
        return this.data[i];
    }
};
//插入操作
SqlList.prototype.insertElem = function(i,elem) {
    if(i<0&&(this.length-1)<i){
        return 1;
    }else{
        this.length++;
        var k = this.length-1;
        while(k>i){
            this.data[k] = this.data[k-1];
            k--;
        }
        //js会自动扩容数组的长度
        this.data[i] = elem;
        return 0;
    }
};
//删除操作
SqlList.prototype.deleteElem = function(i){
    if(i<0&&(this.length-1)<i){
        return 1;
    }else{
        var k = i;
        while(k<this.length-1){
            this.data[k] = this.data[k+1];
            k++;
        }
        this.data.length--;//本处为减小线性表的长度
        this.length--;
        return 0;
    }
}

/*以下是为了测试方便定义的方法*/
//随机赋值
SqlList.prototype.randCover = function(){
    for (var i = this.data.length - 1; i >= 0; i--) {
        this.data[i] = new ElemType(Math.round(Math.random()*100));
    }
}
//创建线性表
var list = new SqlList(20);
//随机赋值
list.randCover();
console.info('随机赋值后:\n'+JSON.stringify(list));
console.info('获取第一个元素:\n'+JSON.stringify(list.getElem(0)));
list.insertElem(0,new ElemType(7));
console.info('在第1个位置插入一个元素7之后的序列:\n'+
    JSON.stringify(list));
list.deleteElem(1);
console.info('在第2个位置删除一个元素之后的序列:\n'+
    JSON.stringify(list));

以上代码在控制台打印后如下:

随机赋值后:
{"data":[{"elem":54},{"elem":3},{"elem":67},{"elem":98},{"elem":89},{"elem":4},{"elem":51},{"elem":26},{"elem":96},{"elem":79},{"elem":26},{"elem":53},{"elem":51},{"elem":66},{"elem":59},{"elem":64},{"elem":14},{"elem":4},{"elem":5},{"elem":3}],"length":20}
获取第一个元素:
{"elem":54}
在第1个位置插入一个元素7之后的序列:
{"data":[{"elem":7},{"elem":54},{"elem":3},{"elem":67},{"elem":98},{"elem":89},{"elem":4},{"elem":51},{"elem":26},{"elem":96},{"elem":79},{"elem":26},{"elem":53},{"elem":51},{"elem":66},{"elem":59},{"elem":64},{"elem":14},{"elem":4},{"elem":5},{"elem":3}],"length":21}
在第2个位置删除一个元素之后的序列:
{"data":[{"elem":7},{"elem":3},{"elem":67},{"elem":98},{"elem":89},{"elem":4},{"elem":51},{"elem":26},{"elem":96},{"elem":79},{"elem":26},{"elem":53},{"elem":51},{"elem":66},{"elem":59},{"elem":64},{"elem":14},{"elem":4},{"elem":5},{"elem":3}],"length":20}

上一篇下一篇

猜你喜欢

热点阅读