先進先出

维基百科,自由的百科全书
跳转至: 导航搜索
Data Queue.svg

“先进先出法”是一種排程演算法。它描述了一個佇列所使用的先到先得服務方式:先進入佇列的工作將先被完成,之後進來的則必須稍候。

範例[编辑]

一個C++語言的範例

#include <iostream>
#include <stdexcept>
 
template <typename T>
class FIFO
{
private:
 
    struct Node {
        T     value;
        Node *next;
 
        Node(T _value) : value(_value), next(NULL) {}
    };
 
    Node *front;
    Node *back;
 
public:
    FIFO() : front(NULL), back(NULL) {}
 
    ~FIFO() {
        while (front != NULL)
            dequeue();
    }
 
    void enqueue(T _value) {
        Node *newNode = new Node(_value);
 
        if (front == NULL)
            front = newNode;
        else
            back->next = newNode;
 
        back = newNode;
    }
 
    T dequeue() {
        if (front == NULL)
           throw std::underflow_error("Nothing to dequeue");
 
        Node *temp   = front;        
        T     result = front->value;
 
        front = front->next;
        delete temp;
 
        return result;
    }
};