学习c++带头结点的链队基本操作(王道数据结构队列的链式存储)

这篇博客详细介绍了如何使用C语言实现链式数据结构,包括带头节点的链队的初始化、销毁、判断队列是否为空、入队和出队等基本操作。这些操作是数据结构和算法中常用的基础功能,对于理解和实现复杂数据结构的管理至关重要。
摘要由CSDN通过智能技术生成
typedef struct DataNode
{
    ElemType data;
    struct DataNode *next;
}DataNode;
typedef struct
{
    DataNode *front;
    dataNode *rear;
}LinkQuNode;
//初始化带头点的链队
void InitQueue(LinkQuNode &q)
{
    q = (LinkQuNode *)malloc(sizeof(LinkQuNode));
    q->rear = q->front;
    q->front->next = NULL;
}
//销毁带头结点的链队 //头指针指向空
bool DestroyQueue(LinkQuNode &q)
{
    DataNode *p,*pre;
    pre = q->front;
    p = pre->next;
    while(pre!=NULL)
    {
        free(pre);
        pre = p;
        p = p->next;
    }
    free(q);
}
//到头结点的链队判空
bool QueueEmpty(LinkQuNode &q)
{
    return(q->rear == q->front);

}
//带头结点的入队操作 从队尾入
bool Enqueue(LinkQuNode &q,ElemType e)
{
        *s = (DataNode *)malloc(sizeof(DataNode));
        s->next = NULL;
        s->data = e;
        q->rear->next = s;
        q->rear = s;
        return true;
}
//带头结点的出队操作  //从对头后出
bool Dequeue(LinkQuNode &q,ElemType e)
{
    if(q->front->next ==NULL)//(p->front == p->rear)效果一样
        return false;
    DataNode *t;
    t= p->front ->next;
    e = t->data;
    p->front->next = t->next;
    free(t);
    return true;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值