#define LINK_QUEUE_H_
/****数据机构定义****/
#define ElemType char
struct Node;
typedef struct Node Node;
typedef struct Node *pNode;
struct Node
{
ElemType elem;
pNode pNext;
};
/****将链接队列再封装一次*****/
struct LinkQueue;
typedef struct LinkQueue LinkQueue;
typedef struct LinkQueue *pLinkQueue;
struct LinkQueue
{
pNode pFront; /***头指针***/
pNode pRear; /***尾指针***/
};
/****函数定义********/
pLinkQueue CreateEmptyQueue();
bool IsEmptyQueue(pLinkQueue p);
bool EnLinkQueue(pLinkQueue p, ElemType elem);
bool DelLinkQueue(pLinkQueue p);
ElemType GetFrontElem(pLinkQueue p);
#endif
、、、、、、、、、、、、、、、、源文件
#include <stdio.h>
#include <malloc.h>
#include "LinkQueue.h"
pLinkQueue CreateEmptyQueue()
{
pLinkQueue p = NULL;
p = (pLinkQueue)malloc(sizeof(LinkQueue));
if(p)
{
p->pFront = NULL;
p->pRear = NULL;
}
return (p);
}
bool IsEmptyQueue(pLinkQueue p)
{
return (p->pFront == NULL);
}
bool EnLinkQueue(pLinkQueue p, ElemType elem)
{
pNode pTemp = NULL;
pTemp = (pNode)malloc(sizeof(Node));
if(pTemp == NULL)
return (false);
//
pTemp->elem = elem;
pTemp->pNext = NULL;
//
if (p->pFront == NULL)
{
p->pFront = pTemp;
p->pRear = pTemp;
}
else
{
p->pRear->pNext = pTemp;
p->pRear = pTemp;
}
return (true);
}
bool DelLinkQueue(pLinkQueue p)
{
pNode pTemp = NULL;
if (p->pFront == NULL)
return (false);
//
pTemp = p->pFront;
p->pFront = p->pFront->pNext;
free(pTemp);
return (true);
}
ElemType GetFrontElem(pLinkQueue p)
{
return (p->pFront->elem);
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、main测试文件