//head.h
#ifndef HEAD_H
#define HEAD_H
#include <stdio.h>
typedef struct Node
{
int data;
struct Node *next;
}Node;
typedef struct Queue
{
Node *front;
Node *rear;
}Queue;
Queue *CreateQueue();//构造空的队列
Queue *InQueue(Queue *q,int data);
Queue *DeQueue(Queue *q);
int GetLength(Queue *q);
void PrintQueue(Queue *q);
#endif // HEAD_H
//fun.c
#include "head.h"
Queue *CreateQueue()//构造空的队列
{
Queue *q = (Queue*)malloc(sizeof(Queue));
q->front = NULL;
q->rear = NULL;
return q;
}
//进队
Queue *InQueue(Queue *q,int data)
{
Node *node = NULL;
node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = NULL;
if(q->rear == NULL)
q->front = q->rear = node;
else
{
q->rear->next = node;
q->rear = node;
}
return q;
}
//出队
Queue *DeQueue(Queue *q)
{
Node *pNode = NULL;
pNode = q->front;
if(pNode == NULL)
{
printf("Empty queue!!\n");
}
else
{
q->front = q->front->next;
if(q->front == NULL)
{
q->rear = NULL;
}
free(pNode);
}
return q;
}
int GetLength(Queue *q)
{
int nLen = 0;
Node *pNode = q->front;
if(pNode != NULL)
nLen = 1;
while(pNode != q->rear)
{
pNode = pNode->next;
nLen++;
}
return nLen;
}
void PrintQueue(Queue *q)
{
Node *pNode = q->front;
if(pNode == NULL)
{
printf("Empty queue!!!\n");
return;
}
while(pNode != q->rear)
{
printf("pNode->data:%d\n",pNode->data);
pNode = pNode->next;
}
printf("pNode->data:%d\n",pNode->data);
}
//main.c
#include "head.h"
int main(void)
{
int nLen = 0;
Queue *hp = CreateQueue();
InQueue(hp,1);
InQueue(hp,2);
InQueue(hp,3);
InQueue(hp,4);
nLen = GetLength(hp);
printf("Len is %d\n",nLen);
PrintQueue(hp);
DeQueue(hp);
PrintQueue(hp);
return 0;
}
//结果: