C语言队列创建
#include<>
#include<>
创建一个链表结构
typedef struct QueueNode
{
int data;
struct QueueNode *next;
}QueueNode,*Queuelink;
再创建一个队列结构
typedef struct Queue
{
Queuelink front, rear;//这里的首尾都是指针型的
}Queue;
//初始化队列
void init(Queue *q)
{
//初始化为空并分配空间
q->front = q->rear = (Queuelink)malloc(sizeof(QueueNode));
if (!q->front)
{
exit(0);
}
//末尾指针指向空
q->front->next = NULL;
}
//入队操作,这里我们的队首节点并不存储值。
void insert(Queue *q, int e)
{
Queuelink p;
p = (Queuelink)malloc(sizeof(QueueNode));
if (p == NULL)
exit(0);
p->data = e;
//这部分和链表的尾插法一致
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
//出队操作,其实就是单链表的操作
void out(Queue *q, int *e)
{
Queuelink p;
if (q->front == q->rear)
{
return;
}
p = q->front->next;
*e = p->data;
q->front->next = p->next;
if (q->rear == p)
{
q->rear = q->front;
}
free(p);
}
//判断是否为空
int isempty(Queue *q)
{
if (q->front == q->rear)
return 1;
else return 0;
}