- Hands-On Data Structures and Algorithms with JavaScript
- Kashyap Mukkamala
- 259字
- 2021-06-30 19:12:07
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.
推薦閱讀
- Learn Blockchain Programming with JavaScript
- Java高并發核心編程(卷2):多線程、鎖、JMM、JUC、高并發設計模式
- Arduino開發實戰指南:LabVIEW卷
- C語言從入門到精通(第4版)
- Practical Game Design
- Full-Stack React Projects
- Reactive Android Programming
- Learning Probabilistic Graphical Models in R
- 編程菜鳥學Python數據分析
- OpenGL Data Visualization Cookbook
- 移動互聯網軟件開發實驗指導
- Spring Web Services 2 Cookbook
- Learning Redux
- 編程風格:程序設計與系統構建的藝術(原書第2版)
- 破繭成蝶:用戶體驗設計師的成長之路