链队列的实现

来源:互联网 发布:js表单提交 编辑:程序博客网 时间:2024/06/04 00:10
//Queue.h#ifndef QUEUE_H#define QUEUE_H#include <stdlib.h>#include <stdio.h>#define OK 1typedef int QElemType;typedef int Status;typedef struct QNode{    QElemType data;    struct QNode *next;}QNode, *QueuePtr;typedef struct{    QueuePtr front;    QueuePtr rear;}LinkQueue;Status InitQueue(LinkQueue &Q);Status EnQueue(LinkQueue &Q, QElemType e);Status DeQueue(LinkQueue &Q, QElemType &e);Status DestroyQueue(LinkQueue &Q);#endif
//Queue.cpp#include "Queue.h"Status InitQueue(LinkQueue &Q){    Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));    if (!Q.front)        printf("分配内存失败!");    Q.front->next = NULL;    return OK;}Status EnQueue(LinkQueue &Q, QElemType e){    QueuePtr p = (QueuePtr)malloc(sizeof(QNode));    if (!p)        printf("没有可用内存!");    p->data = e;    p->next = NULL;    Q.rear->next = p;    Q.rear = p;    return OK;}Status DeQueue(LinkQueue &Q, QElemType &e){    if (Q.front == Q.rear)        printf("队列为空!");    QueuePtr p = Q.front->next;    e = p->data;    Q.front->next = p->next;    if (Q.rear == p)        Q.rear = Q.front;    free(p);    return OK;}Status DestroyQueue(LinkQueue &Q){    while (Q.front)    {        Q.rear = Q.front->next;        free(Q.front);        Q.front = Q.rear;    }    return OK;}
//main.cpp#include "Queue.h"int main(){    int e;    LinkQueue Q;    InitQueue(Q);    EnQueue(Q, 1);    EnQueue(Q, 2);    EnQueue(Q, 3);    DeQueue(Q, e);    printf("%d\n", e);    DestroyQueue(Q);    return 0;}

运行结果图 :
这里写图片描述

0 0
原创粉丝点击