摘要:定義構(gòu)造列表的函數(shù)列表的元素個(gè)數(shù)列表的當(dāng)前位置列表數(shù)組列表的末尾添加新元素找到指定元素的位置返回列表的字符串形式在現(xiàn)有元素后插入新元素從列表中刪除元素清空列表中的所有元素將列表的當(dāng)前位置移到第一個(gè)元素將列表的當(dāng)前位置移到最后一個(gè)元素將當(dāng)前位
定義構(gòu)造列表的函數(shù)
function List() { this.listSize = 0; 列表的元素個(gè)數(shù) this.pos = 0; 列表的當(dāng)前位置 this.dataStore = []; 列表數(shù)組 this.append = append; 列表的末尾添加新元素 this.find = find; 找到指定元素的位置 this.toString = toString; 返回列表的字符串形式 this.insert = insert; 在現(xiàn)有元素后插入新元素 this.remove = remove; 從列表中刪除元素 this.clear = clear; 清空列表中的所有元素 this.front = front; 將列表的當(dāng)前位置移到第一個(gè)元素 this.end = end; 將列表的當(dāng)前位置移到最后一個(gè)元素 this.next = next; 將當(dāng)前位置后移一位 this.hasNext; 判斷是否有后一位 this.hasPrev; 判斷是否有前一位 this.length = length; 返回列表元素的個(gè)數(shù) this.currPos = currPos; 返回列表的當(dāng)前位置 this.moveTo = moveTo; 將列表的當(dāng)前位置移動(dòng)到指定位置 this.getElement = getElement; 返回當(dāng)前位置的元素 this.contains = contains; 判斷給定元素是否在列表中 }
實(shí)現(xiàn)元素插入函數(shù)
function append(element) { this.dataStore[this.listSize++] = element; }
找到元素函數(shù)
function find(element) { for (let i = 0; i < this.listSize; i++) { console.log(i); if (element == this.dataStore[i]) { return i; } } return -1; }
刪除列表中的某個(gè)元素
function remove(element) { let findAt = this.find(element); if (findAt > -1) { this.dataStore.splice(findAt, 1); --this.listSize; return true; } }
獲得列表的長(zhǎng)度
function length() { return this.listSize; }
返回列表的字符串類型數(shù)據(jù)
function toString() { return this.dataStore; }
在列表中指定元素后插入元素
function insert(element, after) { let insertAt = this.find(after); if (insertAt > -1) { this.dataStore.splice(insertAt + 1, 0, element); this.listSize++; return true; } return false; }
清空整個(gè)列表
function clear() { delete this.dataStore; this.dataStore = []; this.listSize = this.pos = 0; }
列表是否包含某個(gè)元素
function contains(element) { for (let i = 0; i < this.listSize; i++) { if (this.dataStore[i] == element) { return true; } } return false; }
當(dāng)前列表的指針指向首部
function front() { this.pos = 0; }
當(dāng)前列表的指針指向尾部
function end() { this.pos = this.listSize - 1; }
當(dāng)前列表元素的前一個(gè)
function prev() { if (this.pos > 0) { this.pos--; } }
當(dāng)前列表元素的后一個(gè)
function next() { if (this.pos < this.listSize - 1) { this.pos++; } }
當(dāng)前的位置
function currPos() {
return this.pos;
}
移動(dòng)到指定位置
function moveTo(position) { if (position < this.listSize - 1) { this.pos = position; } }
獲得當(dāng)前位置的元素
function getElement() { return this.dataStore[this.pos]; }
是否有下一個(gè)元素
function hasNext() { return this.pos < this.listSize - 1; }
是否有上一個(gè)元素
function hasPrev() { return this.pos > 0; } //初始化一個(gè)列表 let list = new List(); list.append("jianguang"); list.append("yinjun"); list.append("jiangsssuang"); list.append("yinssjun"); 移動(dòng)到第一個(gè)元素位置并且顯示 list.front(); print(list.getElement()); 移動(dòng)向前一個(gè)元素位置,并且顯示 list.next(); print(list.getElement());
還可以測(cè)試列表的其他數(shù)據(jù)來(lái)通過(guò)列表實(shí)現(xiàn)想要的效果
歡迎評(píng)論以及留言,同時(shí)歡迎關(guān)注我的博客定時(shí)不斷地更新我的文章 陳建光的博客
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94339.html
摘要:棧被稱為一種后入先出的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。這些操作需要求助于其他數(shù)據(jù)結(jié)構(gòu),比如下面介紹的二叉查找樹(shù)。 前言 在過(guò)去的幾年中,得益于Node.js的興起,JavaScript越來(lái)越廣泛地用于服務(wù)器端編程。鑒于JavaScript語(yǔ)言已經(jīng)走出了瀏覽器,程序員發(fā)現(xiàn)他們需要更多傳統(tǒng)語(yǔ)言(比如C++和Java)提供的工具。這些工具包括傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(如鏈表,棧,隊(duì)列,圖等),...
摘要:每個(gè)列表中的數(shù)據(jù)項(xiàng)稱為元素。棧被稱為一種后入先出,的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。不包含任何成員的集合稱為空集,全集則是包含一切可能成員的集合。因此二叉搜索樹(shù)需要平衡,即左右子樹(shù)高度要相近。 樓樓非計(jì)算機(jī)專業(yè),但是對(duì)計(jì)算機(jī)也還算喜歡。個(gè)人理解若有偏差,歡迎各位批評(píng)指正! 對(duì)于數(shù)據(jù)結(jié)構(gòu)和算法一直是我的薄弱環(huán)節(jié),相信大多數(shù)前端工程師可能多少會(huì)有些這方面的弱點(diǎn),加上數(shù)據(jù)結(jié)構(gòu)和算法本...
摘要:我經(jīng)常在業(yè)務(wù)代碼中把數(shù)據(jù)處理成這種字典的數(shù)據(jù)結(jié)構(gòu)獲取的方法哈希表在學(xué)習(xí)了類之后,我們會(huì)學(xué)習(xí)散列表,也就是哈希表。 《Javascript數(shù)據(jù)結(jié)構(gòu)和算法》筆記-「字典和散列表」 集合、字典、散列表存儲(chǔ)的都是「不重復(fù)」的數(shù)據(jù)結(jié)構(gòu) 集合:我們更關(guān)注每一個(gè)元素的值,并把其作為主要元素 字典:我們用[鍵,值]的形式來(lái)存儲(chǔ)數(shù)據(jù) 散列表: 跟字典類似,也會(huì)是用[鍵,值]的形式來(lái)存儲(chǔ)數(shù)據(jù) 但是「字...
摘要:散列表上面的地圖向我們展示了如何用廣度優(yōu)先搜索的思想找到北京到廣州的最短路線。在廣度優(yōu)先搜索中,我們需要用到隊(duì)列的這種思想來(lái)實(shí)現(xiàn)查找。建立了下面這個(gè)模型武漢廣州西藏上海上海武漢廣州代碼完整實(shí)現(xiàn),利用遞歸和廣度優(yōu)先搜索的思想實(shí)現(xiàn)。 什么是廣度優(yōu)先搜索? 如果只是是背概念,幼兒園的小朋友都能背下來(lái)念給你聽(tīng)。 假設(shè)看這篇文章的都和我一樣是個(gè)前端工程師,我們要從廣度優(yōu)先搜索(BFS)中學(xué)到什么...
閱讀 2513·2023-04-25 17:27
閱讀 1824·2019-08-30 15:54
閱讀 2369·2019-08-30 13:06
閱讀 2980·2019-08-30 11:04
閱讀 746·2019-08-29 15:30
閱讀 729·2019-08-29 15:16
閱讀 1733·2019-08-26 10:10
閱讀 3603·2019-08-23 17:02