JavaScript数据结构1——顺序表
顺序表是数据结构里面的一个重要组成部分,一般情况下用数组来实现,和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}