首页 > 其他 > 详细

队列的链式实现

时间:2020-05-02 23:49:58      阅读:82      评论:0      收藏:0      [点我收藏+]
typedef struct LinkNode{ //链式队列结点 
    int data;
    struct LinkNode *next;
}LinkNode;
typedef struct{  //链式队列 
    LinkNode *front,*rear; //队列头指针和尾指针 
    
}LinkQueue;
void InitQueue(LinkQueue &Q){
    //初始时,rear front都指向头结点 
    Q.rear=Q.front=(LinkNode*)malloc(sizeof(LinkNode));
    Q.front->next=NULL;
    //不带头结点时
    Q.rear=NULL;
    Q.front=NULL; 
}
//入队
void EnQueue(LinkQueue &Q,int x){
    LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
    s->data=x;
    s->next=NULL;
    //带头结点 
    Q.rear->next=s;
    Q.rear=s;
    //不带头结点
    if(Q.front==NULL){
        Q.front=s;
        Q.rear=s;
    } 
    else{
        Q.rear->next=s;
        Q.rear=s;
    }
} 
//出队(带头结点)
bool DeQueue(LinkQueue &Q,int &x){
    if(Q.front==Q.rear) return false;
    LinkNode *p=Q.front->next;
    x=p->data;
    Q.front->next=p->next;
    if(Q.rear==p)
        Q.rear=Q.front;
    free(p);
    return true;
} 
//出队(不带头结点)
bool DeQueue(LinkQueue &Q,int &x){
    if(Q.front==NULL) return false;
    LinkNode *p=Q.front;
    x=p->next;
    if(Q.front==p){
       Q.front=NULL;
       Q.rear=NULL;
    }
    free(p);
    return true; 
}

 

队列的链式实现

原文:https://www.cnblogs.com/ikigai18/p/12819813.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!