#數據結構#鏈隊

/*		鏈隊		*/
typedef struct qnode{	//數據節點類型 
	ElemType data;
	struct qnode *next;
} QNode;
typedef struct{
	QNode *front;
	QNode *rear;
} LiQueue;
//初始化隊列
void InitQueue(LiQueue *&q){
	q=(LiQueue *)malloc(sizeof(LiQueue));
	q->front=q->rear=NULL;
} 
//銷燬隊列
void DestroyQueue(LiQueue *&q){
	QNode *p=q->front,*r;
	if(p!=NULL){
		r=p->next;
		while(r!=NULL){
			free(p);
			p=r;
			r=p->next;
		}
	}
	free(p);
	free(q);
} 
//判斷隊列是否爲空
bool QueueEmpty(liQueue *q){
	return(q->rear==NULL);
} 
//進隊
void enQueue(LiQueue *&q,ElemType e){
	QNode *p;
	p=(QNode *)malloc(sizeof(QNode));
	p->data=e;
	p->next=NULL;
	if(q->rear==NULL){
		q->front=q->rear=p;
	}
	else{
		q->rear->next=p;
		q->rear=p;
	}
} 
//出隊
bool deQueue(LiQueue *&q,ElemType &e){
	QNode *t;
	if(q->rear==NULL){
		return false;
	}
	t=q->front;
	if(q->front==q->rear){
		q->front=q->rear=NULL;
	}
	else{
		q->front=q->front->next;
	}
	e=t->data;
	free(t);
	return true;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章