佇列(Queue)

佇列(queue)是先進先出(FIFO)的線性結構,常以鏈結串列陣列實作。

ppt 下載(動態配置)

傳統非物件寫法

struct node{
  int data;
  node *next;
} *head = NULL;

void put(int x){
  if(head == NULL){
    head = new node();
    head->data = x;
    head->next = NULL;
  }else{
    node *p = head;
    while(p->next != NULL) p = p->next;
    p->next = new node();
    p = p->next;
    p->data = x;
    p->next = NULL;
  }
}

int get(){
  if(head == NULL){
    std::cout << "Queue empty\n";
    return -1;
  }else{
    node *p = head;
    int u;
    head = head->next;
    u = p->data;
    delete p;
    return u;
  }
}

物件寫法

struct node{
  int data;
  node *next;
};

class Queue{
  private:
    node *head;
  public:
    Queue(){ head = NULL; }
    void put(int x){
      if(head == NULL){
        head = new node();
        head->data = x;
        head->next = NULL;
      }else{
        node *p = head;
        while(p->next != NULL) p = p->next;
        p->next = new node();
        p = p->next;
        p->data = x;
        p->next = NULL;
      }
    }
    int get(){
      if(head == NULL){
        std::cout << "Queue empty\n";
        return -1;
      }else{
        node *p = head;
        int u;
        head = head->next;
        u = p->data;
        delete p;
        return u;
      }
    }
};