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

来源:互联网 发布:搞笑网络电话录音 编辑:程序博客网 时间:2024/05/16 11:47

前言

之前写的方法和数据结构结构是串的块存储方式,今天写的是堆分配存储表示。这种表示的特点是:仍以一组地址连续的存储单元存放串值字符序列,但他们的存储空间是在程序执行过程中动态分配而得。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匹配算法,加上一个到两个相关练习题。串结束之后就是数组。