javascript資料結構之順序表

來源:互聯網
上載者:User

標籤:測試   記憶體   溢出   變數   局部變數   而且   數組   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資料結構之順序表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.