顺序队列

来源:互联网 发布:网络励志名言 编辑:程序博客网 时间:2024/05/01 19:01
#include "stdio.h"#include <malloc.h>#define MAXSIZE 10typedef int ElemType;typedef struct Node{    int front,rear;    ElemType elem[MAXSIZE];}SqQueue;SqQueue * InitQueue(){    SqQueue *q;    q=(SqQueue *)malloc(sizeof(SqQueue));    if(q==NULL){        printf("初始化内存失败!");        return NULL;    }else{        q->front=q->rear=0;        return q;    }}int QueueLength(SqQueue *q){    return (q->rear-q->front+MAXSIZE)%MAXSIZE;}int enQueue(SqQueue *q,ElemType e){    if ((q->rear+1)%MAXSIZE==q->front){        return 0;    }    q->rear = (q->rear+1) % MAXSIZE;    q->elem[q->rear]=e;    return 1;}int deQueue(SqQueue *q){    if(q->front==q->rear){        return 0;    }else{        q->front = (q->front+1)% MAXSIZE;        return q->elem[q->front];    }}void  ClearQueue(SqQueue *q){    free(q);}int QueueEmpty(SqQueue *q){    return q->front ==q->rear;}main(){    int i=0;    SqQueue *q;    q=InitQueue();    printf("进队列的顺序为:\n");    for(i;i<10;i++){        printf("%d\t",i+1);        if(enQueue(q,i+1)==0){            printf("队满不能进队列!");        }    }    printf("\n");    printf("队列的长度顺序为:%d\t",QueueLength(q));    printf("\n");    printf("出队的顺序为:\n");    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%d\t",deQueue(q));    printf("%dyy\t",deQueue(q));    printf("hh%d\t",deQueue(q));    printf("\n");    if(QueueEmpty(q)){        printf("队列已经空\n");    }    printf("\n");    printf("释放队列\n");    ClearQueue(q);}

0 0
原创粉丝点击