队列的链式存储结构
由于线性存储结构有顺序存储和链式存储两种,而队列是一种特殊的线性结构,所以,队列自然也会有链式存储结构,这种存储结构,称之为“链队列”。只不过,这种结构需要两个指针,一个指针指向队列的头部,一个指针指向队列的尾部。虽然队列采用了链式存储这种方式,但是它本质上仍然是队列,因此,只要是队列,就要遵循:只允许在队列的头部进行删除操作,只允许在队里的尾部进行插入操作。那么,先来定义个链队列结构:
成都创新互联公司服务项目包括华安网站建设、华安网站制作、华安网页制作以及华安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,华安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到华安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *next; }QNode, *QueuePtr; typedef struct{ QueuePtr front, rear; }LinkQueue;
有了队列这种结构后,就可以进行队列元素的插入操作了。
Status EnQueue ( LinkQueue *Q, QElemType e ){ QueuePtr s = ( QueuePtr ) malloc ( sizeof ( struct QNode ) ); if ( !s ) exit ( OVERFLOW ); s->data = e; s->next = NULL; Q->rear->next = s; Q->rear = s; return OK; }
同样的,元素的删除操作。
Status DeQueue ( LinkQueue *Q, QElemType *e ){ QueuePtr p; if ( Q->front == Q->rear ) return ERROR; p = Q->front->next; *e = p->data; Q->front->next = p->next; if ( Q->rear == p ) Q->rear = Q->front; free ( p ); return OK; }
本文名称:队列的链式存储结构
标题路径:http://myzitong.com/article/jjecdp.html