官术网_书友最值得收藏!

Don't we have arrays for this?

From what we have seen so far, you might wonder why one would need a stack in the first place. It's very similar to an array, and we can perform all of these operations on an array. Then, what is the real purpose of having a stack?

The reasons for preferring a stack over an array are multifold:

  • Using stacks gives a more semantic meaning to your application. Consider this analogy where you have a backpack (an array) and wallet (a stack). Can you put money in both the backpack and wallet? Most certainly; however, when you look at a backpack, you have no clue as to what you may find inside it, but when you look at a wallet, you have a very good idea that it contains money. What kind of money it holds (that is, the data type), such as Dollars, INR, and Pounds, is, however, still not known (supported, unless you take support from TypeScript).
  • Native array operations have varying time complexities. Let's take Array.prototype.splice and Array.prototype.push, for example. Splice has a worst-case time complexity of O(n), as it has to search through all the index and readjust it when an element is spliced out of the array. Push has a worst case complexity of O(n) when the memory buffer is full but is amortized O(1). Stacks avoid elements being accessed directly and internally rely on a WeakMap(), which is memory efficient as you will see shortly.
主站蜘蛛池模板: 枝江市| 新丰县| 潮安县| 连云港市| 肥城市| 绥宁县| 广南县| 水城县| 游戏| 凌海市| 南宫市| 高邮市| 比如县| 沂源县| 闻喜县| 阿拉尔市| 屏边| 绥化市| 昆山市| 武川县| 甘肃省| 深州市| 南宁市| 祥云县| 云和县| 靖远县| 隆子县| 平阳县| 临泽县| 南陵县| 滦平县| 射洪县| 阳信县| 郸城县| 武陟县| 平塘县| 丹凤县| 邛崃市| 新闻| 精河县| 和静县|