8-队列的链式存储结构的操作

顺序队列的操作

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef  int ElemType;

/*链式队列的节点*/
typedef struct LinkNode{
    /*数据域*/
    ElemType data;
    /*指针域,指向下一个节点*/
    struct LinkNode * next;
} LinkNode;
/*链式队列*/
typedef  struct {
    /*队列的队头指针*/
    LinkNode *font;
    /*队列的队尾指针*/
    LinkNode *rear;
} LinkQueue;
/*初始化链式队列*/
void InitQueue(LinkQueue *Q){
    /*申请头结点*/
    Q->font=Q->rear=(LinkNode*) malloc(sizeof (LinkNode));
    Q->font->next=NULL;
}
/*判断链式队列是否为空*/
bool isEmpty(LinkQueue Q){
    return  Q.font==Q.rear;
}
/*入队*/
void ENQueue(LinkQueue *Q,ElemType X){
    /*申请新的节点*/
    LinkNode  *s=(LinkNode*) malloc(sizeof (LinkNode));
    s->data=X;
    s->next=NULL;

    /*插入队尾*/
    Q->rear->next=s;
    /*更新rear*/
    Q->rear=s;

}
/*出队*/
bool   DeQueue(LinkQueue *Q,ElemType *x){
    /*空队,出队失败*/
    if(Q->font==Q->rear){
        return false;
    }
    /*队首结点*/
    LinkNode  *p=Q->font->next;
    *x=p->data;

    /*从链表上摘下结点*/
    Q->font->next=p->next;
    if(Q->rear==p){
        /*链表上只有p这一个结点*/
        Q->rear=Q->font;
    }
    /*释放结点*/
    free(p);
    return true;
}
int main() {

    printf("@@@@");

    return 0;
}

posted @ 2024-07-13 12:37  成强  阅读(7)  评论(0编辑  收藏  举报