標籤:測試 記憶體 溢出 變數 局部變數 而且 數組 pos []
關於線性表的概念這裡就不贅述了,可以自行百度和查閱資料,線性表按照儲存(物理)結構分為順序儲存和鏈式儲存,每種儲存方式的不同決定了它的實現代碼是不同的:
順序儲存的特點就是在記憶體中選一塊連續的地址空間,然後將線性表放入其中,這樣做便於線性表的存取,但是不利於插入和刪除,而且在事先無法確定線性表長度的前提下可能會造成記憶體浪費或溢出。
這篇我是用javascript來實現線性表中的順序表。
下面上代碼:
1 var orderList = function(){ 2 var items = []; //線性表內部定義一個容量為10的數組用來儲存資料 3 this.items = items; //這裡利用了數組是參考型別,執行個體屬性和局部變數其實是指向同一個數組的 4 5 this.findElem = function(data){ //在表中尋找元素,返回對應的地址位置 6 var Symbol = false; 7 var temp = 0; 8 for(var i = 0;i < items.length;i++){ 9 if(items[i] == data){10 Symbol = true;11 temp = i+1;12 }13 }14 if(Symbol){15 return temp;16 }17 };18 19 this.getElem = function(num){ //獲得元素操作,返回獲得的元素20 if(num > items.length || num < 1 || items.length == 0){21 return false;22 }else{23 return items[num - 1]; //注意數組下標是從0開始的24 }25 };26 27 this.ListInsert = function(data,pos){ //插入元素操作,返回新的數組28 if(pos > items.length || pos < 1 || items.length == 0){29 return false;30 }else{31 for(var i = items.length;i >= pos-1;i -= 1){32 items[i+1] = items[i];33 }34 items[pos-1] = data;35 return items;36 }37 };38 39 this.ListDelete = function(pos){ //刪除元素操作,返回刪除的元素40 var temp = items[pos-1];41 if(pos < 1 || pos > items.length || items.length == 0){42 return false;43 }else{44 for(var i = pos;i < items.length;i++){45 items[i-1] = items[i];46 }47 return temp;48 }49 };50 51 52 };53 54 //執行個體化測試一下55 var list = new orderList();56 list.items.push("a","b","c","d","e","f","g");57 console.log(list.items);58 console.log(list.findElem("c"));59 console.log(list.getElem(1));60 console.log(list.ListInsert("j",3));61 console.log(list.ListDelete(2));62 console.log(list.items);
下面是在chrome的console裡面調試的結果,親測無誤。
javascript資料結構之順序表