队列-链式队列

#include<iostream>
#include<vector>

using namespace std;

//结构定义
#define maxSize 50
typedef struct LinkNode{
    int data;
    struct LinkNode *next;
};
typedef struct{
    LinkNode *prior,*rear;
}LinkQueue;

void initLinkQueue(LinkQueue &Q){
    //带头结点的链表
    LinkNode *s = new LinkNode;
    s->next = nullptr;
    Q.prior = s;
    Q.rear = s;
}

bool IsEmpty(LinkQueue Q){
    if(Q.prior == Q.rear){
        return true;
    }
    return false;
}

void EnQueue(LinkQueue &Q,int elem){
    LinkNode *s = new LinkNode;
    s->data = elem;
    s->next = nullptr;
    Q.rear->next = s;
    Q.rear = s;
}

bool DeQueue(LinkQueue &Q,int elem){
    //判断队列是否为空
    if(Q.prior == Q.rear){
        return false;
    }
    LinkNode *p = Q.prior->next;
    elem = p->data;
    Q.prior->next = p->next;
    if(Q.rear == p){
        Q.rear = Q.prior;
    }
    free(p);
    return true;
}

   

猜你喜欢

转载自www.cnblogs.com/buaaZhhx/p/12372701.html