/*
链队列的实现以及相关操作
作者:S_hmily
日期:2011年9月1日
编译环境:VC++6.0
*/
/***************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
/***************************************************/
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef int Status;
typedef struct node{
ElemType data;
struct node *next;
}Qnode, *pQnode;
typedef struct {
pQnode frond;
pQnode rear;
}LinkQueue;
/***************************************************/
//初始化
Status InitLinkQueue(LinkQueue *Q)
{
//头结点
pQnode head = (pQnode)malloc(sizeof(Qnode));
if (!head)
exit(-1);
head->next = NULL;
Q->frond = Q->rear = head;
return OK;
}
/***************************************************/
//入队
Status EnQueue(LinkQueue *Q, ElemType e)
{
pQnode pNew = (pQnode)malloc(sizeof(Qnode));
if (!pNew)
exit(-1);
pNew->data = e;
pNew->next = Q->rear->next;
Q->rear->next = pNew;
Q->rear = pNew;
return OK;
}
/***************************************************/
//出队
Status DeQueue(LinkQueue *Q, ElemType *e)
{
pQnode p = Q->frond->next;
//对空
if (Q->frond == Q->rear)
return ERROR;
*e = p->data;
Q->frond->next = p->next;
if (Q->rear == p)
Q->rear = Q->frond;
free(p);
return OK;
}
/***************************************************/
int main(void)
{
LinkQueue Q;
InitLinkQueue(&Q);
return 0;
}
链队列的实现 C语言
最新推荐文章于 2023-03-22 08:43:56 发布