出于对数据结构的喜欢以及对前端web技术的热爱,本人开始推出一个用JavaScipt描述数据结构的序列,望大家海量指点纠正,在此感激不尽。

首先是用JS编写线性表的顺序存储结构,以下附上代码:

 

  1. /** 
  2.  * 线性表之顺序存储结构 
  3.  */ 
  4.  
  5. var len = 50;   //顺序存储线性表的数组结构大小 
  6. function SeqList(){ 
  7.     this.data = new Array(len); 
  8.     this.currentLength = 0;     //线性表当前长度 
  9.     this.countNum = function(){ 
  10.         while(typeof this.data[this.currentLength] != "undefined"){ 
  11.             this.currentLength++; 
  12.         } 
  13.     }; 
  14.  
  15. //添加元素,此处单纯的往数组尾部添加元素,不涉及元素的移动 
  16. SeqList.prototype.addElement = function(data){ 
  17.     this.data[this.currentLength] = data; 
  18.     this.countNum(); 
  19. }; 
  20.  
  21. //在指定位置添加元素,并且移动相关元素,index表示第几个位置,不包括0 
  22. SeqList.prototype.addElementByIdx = function(data,index){ 
  23.     if(index > this.currentLength){ 
  24.         return "WrongIndexBound"
  25.     } 
  26.     for(var i = this.currentLength-1 ; i >= index-1 ; i--){ 
  27.         this.data[i+1] = this.data[i]; 
  28.          
  29.     } 
  30.     this.data[index-1] = data; 
  31.     this.countNum(); 
  32.     return "Success!!"
  33. }; 
  34.  
  35.  
  36. var e ; //存储返回的值 
  37. SeqList.prototype.getElement = function(index){ 
  38.     e = this.data[index];               //可不可以返回全局变量啊? 
  39.     if(typeof e == "undefined"){ 
  40.         return "Wrong index"
  41.     } 
  42.     else
  43.         return e; 
  44.     } 
  45. }; 
  46.  
  47. var countMember = 0; //统计参量 
  48. function Member(name,age){ 
  49.     this.name = name; 
  50.     this.age = age; 
  51.     this.toString = function(){ 
  52.         return "[" + this.name + "," + this.age + "]"
  53.     }; 
  54. var itmArray = new Array(); 
  55. //驱动程序 
  56. function driver(){ 
  57.     var mySeqList = new SeqList(); 
  58.     var itm1 = new Member("zero",30); 
  59.     countMember++;          //易错提示:当写入一个属性的值时候,JS不会使用原型对象 
  60.     itmArray[0] = itm1; 
  61.     var itm2 = new Member("one",20); 
  62.     countMember++; 
  63.     itmArray[1] = itm2; 
  64.     var itm3 = new Member("two",10); 
  65.     countMember++; 
  66.     itmArray[2] = itm3; 
  67.     var itm4 = new Member("three",40); 
  68.     countMember++; 
  69.     itmArray[3] = itm4; 
  70.      
  71.     var tempItm = new Member("TEMPITEM",140); 
  72.      
  73.     /*for(var j = 0; j < 20; j++){ 
  74.          
  75.     }*/ 
  76.      
  77.     for(var z =0; z < countMember; z++){    //添加元素 
  78.         document.writeln(itmArray[z]); 
  79.         mySeqList.addElement(itmArray[z]); 
  80.     } 
  81.      
  82.      
  83.     var tempppp = mySeqList.getElement(2); 
  84.     document.writeln(tempppp + "<br />"); 
  85.     document.write(e + "<br />"); 
  86.      
  87.     //循环遍历,注意作用域的问题 
  88.      
  89.     var iii = mySeqList.addElementByIdx(tempItm, 3); 
  90.     document.write("iii = " + iii + "<br />"); 
  91.     document.writeln("mySeqList.getElement(2) = " + mySeqList.getElement(2)+ "<br />"); 
  92.      
  93.     document.write("循环遍历顺序表" + "<br />"); 
  94.     for(var f = 0; f < mySeqList.currentLength; f++ ){ 
  95.         document.write(mySeqList.data[f] + "<br />"); 
  96.     } 
  97.  
  98. driver();