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

数据结构day11

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

数据结构day11

C语言数据结构代码练习day11 顺序队列优化

如果将队列全部存满,队列为空和为满时,队头指针和队尾指针指向同一处。定义int size,当队头指针和队尾指针相同时,size!=0队满,size==0时队空。

#include
#include

typedef struct LNode{       //定义栈数据结构
    int data[10];       //栈数据
    int front=0;
    int rear=0;    //队头、队尾初始化指向data[0]
    int size=0;
}SqQueue;


bool EnQueue(SqQueue &Q,int x){
    if(Q.rear==Q.front&&Q.size!=0)
        return false;       //队满
    Q.data[Q.rear]=x;
    Q.rear=(Q.rear+1)%10;
    Q.size++;
    return true;        //入队成功
}


bool DeQueue(SqQueue &Q,int &x){
    if(Q.rear==Q.front&&Q.size==0)
        return false;       //队空
    x=Q.data[Q.front];
    Q.front=(Q.front+1)%10;
    Q.size--;
    return true;        //出队成功
}
链式队列
#include
#include

typedef struct LNode{       //定义栈数据结构
    int data;       //结点数据
    struct LNode *Next;     //链指针
}LNode;       

typedef struct{     //定义队列
    LNode *front,*rear;        //队头指针、队尾指针
}linkQueue;


void InitQueue(linkQueue &Q){
    Q.front=Q.rear=(LNode *)malloc(sizeof(LNode));
    Q.front->Next=NULL;       //队空 
}


void EnQueue(linkQueue &Q,int x){
    LNode *s=(LNode*)malloc(sizeof(LNode));
    s->data=x;
    s->Next=NULL;
    Q.rear->Next=s;
    Q.rear=s;
}


bool DeQueue(linkQueue &Q,int &x){
    if(Q.front==Q.rear)
        return false;       //队空
    LNode*p=Q.front->Next;
    x=p->data;
    Q.front->Next=p->Next;
    if(Q.rear==p)
        Q.rear=Q.front;
    free(p);
    return true;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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