最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年01月01日 13:55:57   作者:wenxuehai  
棧是一種遵從后進(jìn)先出(LIFO)原則的有序集合。新添加的或待刪除的元素都保存在棧末尾,稱作棧頂,另一端稱作棧底。在棧里,新元素都靠近棧頂,舊元素就接近棧底。

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

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

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

用數(shù)組 dataStore 保存棧內(nèi)元素,構(gòu)造函數(shù)將其初始化為一個(gè)空數(shù)組。變量 top 記錄 棧頂位置,被構(gòu)造函數(shù)初始化為 0,表示棧頂對(duì)應(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 所對(duì)應(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è)位置的元素,即棧頂元素。如果對(duì)一個(gè)空棧調(diào)用 peek() 方法,結(jié)果為 undefined。這是因?yàn)闂J强盏?,棧頂沒(méi)有任何 元素。

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

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

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

function length() {
  return this.top;
}

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

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

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

相關(guān)文章

最新評(píng)論

巢湖市| 田东县| 武穴市| 科技| 宣武区| 南召县| 盐津县| 肇州县| 青岛市| 定陶县| 罗定市| 大邑县| 鹤庆县| 新津县| 会宁县| 哈密市| 永仁县| 织金县| 安仁县| 偃师市| 托克逊县| 栾城县| 堆龙德庆县| 旅游| 石嘴山市| 南城县| 乌拉特后旗| 古蔺县| 太谷县| 惠州市| 新巴尔虎左旗| 锡林浩特市| 贵南县| 潜江市| 万荣县| 古田县| 彰化县| 鄂托克旗| 安平县| 四会市| 习水县|