链式队列

#pragma once 

template<class Object>
class Queue
{
public:
    Queue();
    ~Queue();

    bool isEmpty() const;
    const Object& GetFront() const;//拿出队首的数据
    void enqueue(const Object& x);
    Object dequeue();
    void MakeEmpty();
private:
    struct ListNode
    {
        Object element;
        ListNode *next;

        ListNode(const Object& theElement, ListNode *n = 0)
            :element(theElement), next(n)
        {

        }
    };

private:

    ListNode *front;
    ListNode *back;
};

template<class Object>
Queue<Object>::Queue() :front(0), back(0)
{

}

template<class Object>
Queue<Object>::~Queue()
{
    MakeEmpty();
}

template<class Object>
inline bool Queue<Object>::isEmpty() const
{
    return front == 0;
}

//拿出队首的数据
template<class Object>
inline const Object& Queue<Object>::GetFront() const
{
    if (isEmpty())
    {
        throw " Queue is empty.";
    }

    return front->element;
}

//压入新数据
template<class Object>
void Queue<Object>::enqueue(const Object& x)
{
    if (isEmpty())
    {
        back = front = new ListNode(x);
    }
    else
    {
        back = back->next = new ListNode(x);
    }
}

//从队首开始删除数据,同时返回队首节点中的数据
template<class Object>
Object Queue<Object>::dequeue()
{
    Object frontItem = GetFront();

    ListNode *temp = front;
    front = front->next;

    delete temp;

    return frontItem;
}

template<class Object>
void Queue<Object>::MakeEmpty()
{
    while (!isEmpty())
    {
        dequeue();//删除数据
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值