您的位置:首页 > 理论基础 > 数据结构算法

javascript数据结构系列(五)-串(3)

2017-08-28 21:45 204 查看

前言

之前写的方法和数据结构结构是串的块存储方式,今天写的是堆分配存储表示。这种表示的特点是:仍以一组地址连续的存储单元存放串值字符序列,但他们的存储空间是在程序执行过程中动态分配而得。ps:前几天比较忙,很多其他的杂事没来得及写博客。

串的堆分配方式

//存储结构
function Hstring(){
this.ch = [];
this.length = 0;
};


//相关方法
exports.Hstring = Hstring;
Hstring.prototype = {
StrAssign:function(chars){
StrCopy(this.ch, chars, 0, chars.length - 1, 0);
this.length = chars.length;
},
StrLength:function(){
return this.length;
},
ClearHString:function(){
this.ch  = [];
this.length = 0;
},
//比较两个串,若S > T,则返回>0,=则返回0,否则返回< 0;
StrCompare:function(THString){
for(var i = 0;i < this.length && i<THString.length;++i ){
if(this.ch[i] != THString.ch[i]){
return this.ch[i]-THString.ch[i];
}
}
return this.length - THString.length;
},
//链接两个字符串
Concat:function(S){
var T = new Hstring();
//直接将this所指的字符串拷贝给T
StrCopy(T.ch,this.ch,0,this.length - 1,0);
//设置T的长度
T.length = this.length + S.length;
//拷贝S的字符串给T,注意destStart是从this.Length开始的
StrCopy(T.ch,S.ch,this.length,S.length - 1,0);
console.log(T.toString());
return T;
},
//用sub返回串this的第pos个字符起长度为len的子串
SubString:function(pos,len){
if(pos < 1 || pos > this.length || len  < 0 || len > this.length-pos+1){
return Error;
}
var sub = new Hstring();
if(!len){
return false;
}else{
StrCopy(sub.ch, this.ch, 0, len - 1, pos);
sub.length = len;
}
console.log(sub);
return sub;
},
toString:function(){
var s = '';
for(var i = 0;i<this.length;i++){
s += this.ch[i];
}
console.log(s)
return s;
},
}


后记

串的相关数据结构应该还有一个KMP匹配算法,加上一个到两个相关练习题。串结束之后就是数组。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: