您的位置:首页 > 其它

队列的链式存储操作

2017-03-24 18:57 218 查看
typedef int QElemtype;

typedef struct QNode
{
QElemtype data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct
{
QueuePtr front,rear;
}LinkQueue;

//插入元素e为Q的新的队尾元素
Status EnQueue(LinkQueue *Q,QElemtype e)
{
QueuePtr s=(QueuePtr)malloc(sizeof(QNode));
if(!s) exit(OVERFLOW);
s->data=e;
s->next=NULL;
Q->rear->next=s;
Q->rear=s;
return OK;
}

//若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: