鏈表之隊列

隊列也屬於鏈表的一種,他的特點是先入先出

也就是說在對位插入節點,在對頭移除節點

template<typename T>
struct Node{

public:
    Node(T value, Node<T> *next):
    value(value), next(next){}
    Node(T value): value(value){}
    Node(){}

public:
    T value;
    Node<T>* next;
};

主要操作包括入隊和出隊

template <class T>
class LinkQueue
{
public:
    LinkQueue();
    ~LinkQueue(){}

    // 入隊
    void push(T val);

    // 出隊
    void pop();

    bool isEmpty(){ return count == 0;}

    int size()const {return count;}

    void printLink();
private:
    int count;
    Node<T> *phead;
    Node<T> *pend;

};

template <typename T>
LinkQueue<T>::LinkQueue(){
    count = 0;
    phead = new Node<T>(0, nullptr);
    pend = phead;
}

template <typename T>
void LinkQueue<T>::push(T val){
    // 在尾部插入
    Node<T> *node = new Node<T>(val, nullptr);
    pend->next = node;
    pend=node; // 尾指針
    count ++;
}

template <typename T>
void LinkQueue<T>::pop(){
    if(phead->next!=nullptr){
        Node<T>* node = phead->next;
        phead->next = phead->next->next;
        count --;
    }
}

template <typename T>
void LinkQueue<T>::printLink(){
    using namespace std;
    Node<T> *node = phead;
    while (node->next!=nullptr) {
        node = node->next;
        T value = node->value;
        cout<< value << " ";
    }
    cout << endl;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章