首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 順序棧雙棧共享空間:push 函數參數 DS 含義與作用

     編輯:程式設計疑難解答

代碼片段

bool push(DualStack &DS, T x, int d) {
    if (DS.t[0] + 1 == DS.t[1]) return false;  // 棧滿
    if (d == 0) DS.t[0]++;
    else DS.t[1]--;
    DS.Vector[DS.t[d]] = x;
    return true;
}

DS 解析

DualStack &DS 是雙棧結構體的引用**,包含:

  • Vector:底層數組,存放兩棧數據。
  • t[0]:0 號棧棧頂索引(從 -1 向上增長)。
  • t[1]:1 號棧棧頂索引(從 MAXSIZE 向下增長)。

為何不可刪除 DS

  • 函數需修改**棧頂指針 t[0]/t[1] 及數組內容 Vector。
  • 若改為值傳遞 DualStack DS,修改僅影響副本,調用者棧狀態不變。
  • 引用傳遞避免大結構體拷貝,效率高且語義正確。

完整結構體定義

template <typename T, int MAXSIZE>
struct DualStack {
    T Vector[MAXSIZE];
    int t[2];  // t[0] = -1, t[1] = MAXSIZE 初始化
    DualStack() : t{-1, MAXSIZE} {}
};
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved