首页 > 其他 > 详细

队列的链式存储结构

时间:2017-09-24 18:05:45      阅读:223      评论:0      收藏:0      [点我收藏+]

   由于线性存储结构有顺序存储和链式存储两种,而队列是一种特殊的线性结构,所以,队列自然也会有链式存储结构,这种存储结构,称之为“链队列”。只不过,这种结构需要两个指针,一个指针指向队列的头部,一个指针指向队列的尾部。虽然队列采用了链式存储这种方式,但是它本质上仍然是队列,因此,只要是队列,就要遵循:只允许在队列的头部进行删除操作,只允许在队里的尾部进行插入操作。那么,先来定义个链队列结构:

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://chen0547.blog.51cto.com/12489941/1968179

队列的链式存储结构

原文:http://chen0547.blog.51cto.com/12489941/1968179

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!