堆疊(Stack)

堆疊常以陣列模擬,包含兩個重要資料:存放資料的陣列堆疊指標(sp)。 兩個核心操作為 push()(推入)與 pop()(彈出)。

傳統寫法

#define N 100
int stack[N], sp = 0; // 堆疊與堆疊指標

void push(int data){
  if(sp >= N) std::cout << "Stack full\n";
  else stack[sp++] = data;
}

int pop(){
  if(sp <= 0){
    std::cout << "Stack empty\n";
    return -1;
  }else{
    return stack[--sp];
  }
}

物件寫法

const int N = 10;
class Stack{
  private:
    int data[N]; int sp;
  public:
    Stack(){ sp = 0; }
    void push(int x){
      if(sp < N) data[sp++] = x;
      else std::cout << "Stack full.\n";
    }
    int pop(){
      if(sp > 0) return data[--sp];
      else { std::cout << "Stack empty.\n"; return -1; }
    }
};