#ifndef __QUEUE_H_
#define __QUEUE_H_
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode * next;
}LNode;
typedef LNode QNode;
typedef struct
{
QNode *front;
QNode *rear;
}LinkQueue;
int CreatQueue(LinkQueue *queue)
{
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(NULL==p)
return -1;
p->next=NULL;
queue->front=p;
queue->rear=p;
return 0;
}
int QueueEmpty(LinkQueue *queue)
{
if(queue->front->next==NULL)
return 1;
return 0;
}
int QueueLength(LinkQueue queue)
{
int count=1;
QNode *p=queue.front;
if(QueueEmpty(&queue))
return 0;
while(p->next->data!=queue.rear->data)
{
p=p->next;
count++;
}
return count;
}
int GetHead(LinkQueue queue,ElemType *e)
{
if(QueueEmpty(&queue))
return -1;
*e=(queue.front)->next->data;
return 0;
}
int EnQueue(LinkQueue *queue,ElemType e)
{
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(NULL==p)
return -1;
p->data=e;
p->next=NULL;
queue->rear->next=p;
queue->rear=p;
return 0;
}
int DeQueue(LinkQueue queue,ElemType *e)
{
QNode *p=NULL;
if(QueueEmpty(&queue))
return -1;
p=(queue.front)->next;
*e=p->data;
(queue.front)->next=p->next;
p->next=NULL;
free(p);
return 0;
}
#endif
自己编写链队列的头文件
最新推荐文章于 2021-07-22 13:28:32 发布