栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号