码迷,mamicode.com
首页 > 其他好文 > 详细

ex7.写一个队列

时间:2016-03-07 23:58:57      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<stdlib.h>
typedef int QElemType;
typedef struct QNode{
    QElemType data;
    struct QNode *next ; 
}QNode,*QueuePtr;
typedef struct{
    QueuePtr front;
    QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue &Q){
    Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
    if(!Q.front) exit(-2);
    Q.front->next = NULL;
    return 1;
}
int EnQueue(LinkQueue &Q,QElemType e){
    QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
    if(!p) exit(-2);
    p->data = e;p->next = NULL;
    Q.rear->next = p;
    Q.rear = p;
    return 1;
}
int DeQueue(LinkQueue &Q,QElemType &e){
    if(Q.front == Q.rear) return -1;
    QueuePtr p = Q.front->next;
    e = p->data;
    Q.front->next = p->next;
    if(Q.rear == p) Q.rear = Q.front;
    free(p);
    printf("%d Out\n",e);
    return 1;
}
int DestoryQueue(LinkQueue &Q){
    while(Q.front){
        Q.rear = Q.front->next;
        free(Q.front);
        Q.front = Q.rear;
    }
    return 1;
}
void ShowQueue(LinkQueue &Q)
{
    printf("-----ShowQueue Start-----\n");
    QueuePtr pf = Q.front;
    QueuePtr pr = Q.rear;
    while(pf!=pr){
        pf = pf->next ;
        printf("%d\n",pf->data);
    }
    printf("-----ShowQueue Done-----\n");
}
int main(){
    LinkQueue q1;
    InitQueue(q1);
    EnQueue(q1,1);EnQueue(q1,2);EnQueue(q1,3);EnQueue(q1,4);EnQueue(q1,5);
    ShowQueue(q1);
    QElemType e;
    DeQueue(q1,e);DeQueue(q1,e);
    ShowQueue(q1);
    return 0;
}
    

虽然书中把队列和栈放在了同一章,不过理解起队列还是要比栈难一点。不过熟悉过后都不难,多练习

ex7.写一个队列

标签:

原文地址:http://www.cnblogs.com/minemine/p/5252137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!