欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

四、(4)队列---链队

程序员文章站 2024-03-24 18:55:04
...

四、(4)队列---链队

链队的链式存储结构:

typedef struct QNode{
	QElemType data;
	struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
	QueuePtr front;		//队头指针 
	QueuePtr rear;		//队尾指针 
}LinkQueue;
(1)链队初始化:
Status InitQueue(LinkQueue &Q)
{
	Q.front=Q.rear=new QNode;	//生成新结点作为头结点,队头和队尾指针指向此结点 	
	Q.front->next=NULL;		//头结点的指针域置空 
	return true;
}
(2)链队入队:
Status EnQueue(LinkQueue &Q,QElemType e)
{
	QNode *p=new QNode;
	p->data=e;
	p->next=NULL;		 
	Q.rear->next=p;		//将新结点插入到队尾 
	Q.rear=p;		//修改队尾指针 
	return true;
}
(3)链队出队:
Status DeQueue(LinkQueue &Q,QElemType &e)
{
	if(Q.front==Q.rear)
	{
		return false;		
	}
	p=Q.front->next;		//p指向队头
	e=p->data;//回收站 
	Q.front->next=p->next;		//修改头指针
	if(Q.rear==p)
	{
		Q.rear=Q.front;		//最后一个元素被删,队尾指针指向头结点		
	}
	delete p;
	return true; 
}
(4)取队头元素:
QElemType GetHead(LinkQueue Q)
{
	if(Q.front!=Q.rear)
	{
		return Q.front->next->data;	//返回对头元素的值		
	}
}
相关标签: 链队