队列的基本实现

Queue.h

#pragma ince
typedef int DataType;
typedef struct QueueNode//队列节点
{
    QDataType _data;
    struct ListNode* _pnext;

}ListNode, *PListNode;
 struct Queue
{
    PListNode _phead;
    PListNode _ptail;
};

void QueueInit(Queue* q);//初始化队列
void QueuePush(Queue* q,DataType x);//入队列
void QueuePop(Queue* q);//出队列
DataType QueueFront(Queue* q);//取得对头元素
DataType QueueBack(Queue* q);//取得队尾元素
int QueueSize(Queue* q);//队列大小
int QueueEmpty(Queue* q);//判断队列是否为空


PListNode BuyListNode(QDataType data)//创建节点
{
    PListNode pNewNode = (PListNode)malloc(sizeof(ListNode));
    if(NUll == pNewNode)
    {
        assert(0);
        return NUll;
    }
    pNewNode->_data = data;
    pNewNode->_pnext = NUll;
    return pNewNode;
}

void QueueInit(Queue* q)//初始化队列
{
    assert(q);
    q->_phead = q->_ptail = BuyListNode(0);

}

void QueuePush(Queue* q,QDataType data)//入队列
{
    assert(q);
    q->_ptail = BuyListNode(data);
    q->_ptail = q->_ptail->_pnext;
}

void QueuePop(Queue* q)//出队列
{
    PListNode PDelNode = NULL;
    assert(q);
    PDelNode = q->_phead->_pnext;
    if(PDelNode)
    {
        q->_phead->_pnext = PDelNode->_pnext;
        free(PDelNode);
    }
}
int QueueSize(Queue* q)//队列大小
{
    PListNode pCur;
    int count = 0;
    assert(q);
    pCur = q->_phead->_pnext;
    while(pCur)
    {
        count++;
        pCur = pCur->_pnext;
    }
    return count;
}
int QueueEmpty(Queue* q)//判断队列是否为空
{
    return NULL = q->_phead->_pnext;
}
DataType QueueFront(Queue* q)//取得对头元素
{
    return q->_phead->_pnext->_data;
}
DataType QueueBack(Queue* q)//取得队尾元素
{
    return q->_ptail->_data;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值