数据结构与算法(9)--链式队列

typedef struct{ //链式队列结点 
	ElemType data; 
	struct LinkNode *next; 
}LinkNode;

typedef struct{
	LinkNode *front,*rear; //队头和队尾指针 
}LinkQueue; //这时候的队列有头节点的front指向头节点 


//入队
bool Push(LinkQueue &Q,ElemType e)
{
	LinkNode *q = (LinkNode*)malloc(sizeof(LinkNode)); 
	q->data = e;
	q->next = NULL;
	Q.rear->next = q;
	Q.rear = q;
} 

//出队
bool Pop(LinkQueue &Q,ElemType &e)
{
	if (Q.front == Q.rear)
	{
		return false; //如果队列为空 
	}
	LinkNode *p = Q.front->next;
	e = p->data;
	Q.front->next = p->next;
	if(Q.rear == p)
	{
		Q.rear = Q.front; //如果队列中只有一个节点,删除后为空 
	}
	free(p);
} 

你可能感兴趣的:(数据结构)