數據結構與算法(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);
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章