- 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.
推薦閱讀
- 極簡算法史:從數學到機器的故事
- PHP動態網站程序設計
- VMware View Security Essentials
- 程序設計與實踐(VB.NET)
- Redis入門指南(第3版)
- Learn Swift by Building Applications
- 深入淺出DPDK
- HTML5 and CSS3 Transition,Transformation,and Animation
- Python數據挖掘與機器學習實戰
- 小學生C++創意編程(視頻教學版)
- 焊接機器人系統操作、編程與維護
- 人工智能算法(卷1):基礎算法
- ASP.NET 4.0 Web程序設計
- Flask Web開發:基于Python的Web應用開發實戰(第2版)
- LabVIEW數據采集