此文件用于创建一个链式队列
分析:
我们需要创建一个链表,然后设置front、rear指针,用来模拟入队出队的过程
代码如下:
struct Link {
int data;
struct Link *next;
};
struct LinkQueue {
struct Link *front, *rear;
};
#include <stdio.h>
#include <stdlib.h>
//创建链队
LinkQueue *create() {
struct Link *h,*p;
struct LinkQueue *lq;
Link *createLink(int);
h = createLink(0);
p = h->next;
lq->front = h;
while (p->next) {
p = p->next;
}
lq->rear->next = p;
return lq;
}
//判断空
bool isEmpty(LinkQueue *lq) {
return lq->front == lq->rear;
}
//入队
bool enQueue(LinkQueue *lq,int data) {//队尾插入
struct Link *newd = (struct Link *)malloc(sizeof(struct Link));
newd->data = data;
lq->rear->next = newd;
lq->rear = newd;
return true;
}
//出队
bool deQueue(LinkQueue *lq,int *data) {
if (isEmpty(lq))return false;
struct Link *p = lq->front->next;//保存下一个节点
*data = lq->front->next->data;//取出队首节点值
lq->front->next = p->next;//删除队首节点
if (lq->rear==p) {
lq->rear = lq->front;
}
free(p);
return true;
}
苦难,是化了妆的祝福。