1,链式队列

规则:先进先出;

1.1链表基本框架
typedef int Data;
typedef struct _Node
{
   
	Data data;
	struct _Node* next;
}Node;
typedef struct _LinkQueue
{
   
	int size;
	Node* front;
	Node* tail;
}LinkQueue;
1.2创建一个队列
LinkQueue* createLinkQueue()
{
   
    LinkQueue* que = calloc(1, sizeof(LinkQueue));
    assert(que != NULL);
    que->front = calloc(1, sizeof(Node));
    assert(que->front != NULL);
    que->tail = que->front;
    que->size = 0;

    return que;
}
1.3创建一个新结点
static Node* createNode(Data val)
{
   
    Node* newNode = calloc(1, sizeof(Node));
    assert(newNode != NULL);
    newNode->data = val;
    return newNode;
}
1.4入队–队尾
//入队--队尾 
void push(LinkQueue* que, Data val)
{
   
    Node* newNode = createNode(val);
    if (newNode==NULL)
    {
   
        return;
    }
    que->tail->next = newNode;
    que->tail = newNode;
    que->size++;
}
1.5出队–队头 删除
//出队--队头 头删
void pop(LinkQueue* que)
{
   
    if (empty(que))
    {
   
        return;
    }
    Node* delNode = que->front->next;
    que->front->next = delNode->next;
    free(delNode);
    que->size--;
}
1.6获取队头元素
//获取队头元素
Data front(LinkQueue* que)
{
   
    assert(!empty(que));
    return que->front->next->data;
}
1.7获取队尾元素
//获取队尾元素
Data back(LinkQueue* que)
{
   
    assert(!empty(que));
    return que->tail->data;
}
1.8获取大小
//获取大小
int size(LinkQueue* que)
{
   
    return que->size;
}
1.9判空
//判空
#include<stdbool.h>
bool empty(LinkQueue* que)
{
   
    return que->size == 0;
}