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

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.
主站蜘蛛池模板: 淮安市| 苏尼特右旗| 贺州市| 湛江市| 响水县| 民乐县| 湖南省| 依安县| 水富县| 左云县| 永城市| 横山县| 临海市| 简阳市| 获嘉县| 临潭县| 西城区| 黄浦区| 光泽县| 延津县| 保靖县| 万山特区| 闻喜县| 张北县| 伊金霍洛旗| 闽侯县| 赤峰市| 呼图壁县| 旌德县| 贵溪市| 乌拉特前旗| 雷波县| 清丰县| 原阳县| 杭锦旗| 巫山县| 桦川县| 甘孜县| 宝清县| 道孚县| 固安县|