順序存儲之兩棧共享空間原理

參考鏈接:https://blog.csdn.net/weixin_41463193/article/details/85719352
反覆看了幾遍《大話數據結構》第四章的4.5節,始終不太理解順序存儲的兩棧共享是如何實現的(一開始被圖4-5-1誤導了,以爲是通過兩個數組來實現)。讀完參考鏈接的博客後,恍然大悟。要點整理如下:

  1. 在一個數組(長度爲n)中有兩個棧;
  2. 數組的始端和尾端分別是兩個棧的棧底;
  3. 對於棧底爲數組始端的棧1,插入元素時棧頂指針值(對應數組下標值)top1增加,刪除元素時top1減少;
  4. 對於棧底爲數組尾端的棧2,插入元素時棧頂指針值top2減少,刪除元素時top2增加;
  5. 當且僅當兩棧的棧頂相遇時,即top1 + 1 == top2時,棧滿,即數組被全部填充;
  6. top1 == -1時,棧1爲空;
  7. top2 == n時,棧2爲空;
  8. 插入元素時,需要判斷是否棧滿,以及要把元素插入到棧1還是棧2;
  9. 刪除元素時,需要判斷棧1或棧2是否爲空,並刪除相應的元素。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章