国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS中數(shù)據(jù)結(jié)構(gòu)之棧

2024-05-06 15:43:39
字體:
供稿:網(wǎng)友

棧是一種高效的數(shù)據(jù)結(jié)構(gòu),因?yàn)閿?shù)據(jù)只能在棧頂添加或刪除,所以這樣的操作很快,而且容易實(shí)現(xiàn)。

棧是一種特殊的列表,棧內(nèi)的元素只能通過列表的一端訪問,這一端稱為棧頂。棧被稱為一種后入先出(LIFO,last-in-first-out)的數(shù)據(jù)結(jié)構(gòu)。由于棧具有后入先出的特點(diǎn),所以任何不在棧頂?shù)脑囟紵o法訪問。為了得到棧底的元 素,必須先拿掉上面的元素。

棧的實(shí)現(xiàn)

用數(shù)組 dataStore 保存棧內(nèi)元素,構(gòu)造函數(shù)將其初始化為一個(gè)空數(shù)組。變量 top 記錄 棧頂位置,被構(gòu)造函數(shù)初始化為 0,表示棧頂對應(yīng)數(shù)組的起始位置 0。如果有元素被壓入 棧,該變量的值將隨之變化。

function Stack() {  this.dataStore = [];  this.top = 0;  this.push = push;  this.pop = pop;  this.peek = peek;}

push() 方法:當(dāng)向棧中壓入一個(gè)新元素時(shí),需要將其保存在數(shù)組中變量 top 所對應(yīng)的位置,然后將 top 值加 1,讓其指向數(shù)組中下一個(gè)空位置。

function push(element) {  this.dataStore[this.top++] = element;}

pop() 方法:與 push() 方法相反——它返回棧頂元素,同時(shí)將變量 top 的值減 1

function pop() {  return this.dataStore[--this.top];}

peek() 方法:返回?cái)?shù)組的第 top-1 個(gè)位置的元素,即棧頂元素。如果對一個(gè)空棧調(diào)用 peek() 方法,結(jié)果為 undefined。這是因?yàn)闂J强盏模瑮m敍]有任何 元素。

pop() 方法雖然可以訪問棧頂?shù)脑兀钦{(diào)用該方法后,棧頂元素也從棧中被永久性地刪除了。peek() 方法則只返回棧頂元素,而不刪除它。

function peek() {  return this.dataStore[this.top-1];}

length() 方法:通過返回變量 top 值的方式返回棧 內(nèi)的元素個(gè)數(shù)

function length() {  return this.top;}

clear()方法:將變量 top 的值設(shè)為 0,清空棧

function clear() {  this.top = 0;}

使用棧解決問題舉例:判斷一個(gè)字符串是否是回文

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 澳门| 庆阳市| 台山市| 云霄县| 大安市| 克什克腾旗| 刚察县| 南漳县| 温宿县| 丰镇市| 十堰市| 基隆市| 乌拉特前旗| 理塘县| 黑河市| 北辰区| 鄂伦春自治旗| 阿拉善右旗| 西青区| 库车县| 巴彦县| 台湾省| 南投市| 蓬溪县| 辽中县| 鹤山市| 武功县| 通许县| 申扎县| 新平| 建湖县| 化州市| 虞城县| 政和县| 桓仁| 云霄县| 宜章县| 榆林市| 大洼县| 贵港市| 石阡县|