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匹配算法,加上一个到两个相关练习题。串结束之后就是数组。
相关文章推荐
- 从零开始学_JavaScript_系列(44)——ES6新增数据结构:Set类型和WeakSet
- JavaScript中的数据结构及实战系列(2):栈
- javascript数据结构系列(二)-线性表(1)
- JavaScript中的数据结构及实战系列(1):队列
- javascript数据结构系列(五)-串
- javascript数据结构系列(一)-线性表
- javascript数据结构系列(六)-树和二叉树(1)
- Javascript与数据结构系列(一)——栈的实现
- Javascript与数据结构系列(二)——队列的实现
- javascript数据结构系列(六)-二叉树(2)
- JavaScript中的数据结构及实战系列
- 【脚本语言系列】关于JavaScript数据结构,你需要知道的事
- 从零开始学_JavaScript_系列(45)——ES6新增数据结构:Map和WeakMap
- javascript数据结构系列(三)-栈
- JavaScript中的数据结构及实战系列(1):队列
- Win10系列:JavaScript写入和读取文件
- 深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
- javascript继承学习系列之一:初识JS的OOP
- 重温数据结构系列随笔:单链表(c#模拟实现)
- C#数据结构和算法学习系列三----ArrayList类的特性及应用