源文件:
#include"queue.h"queuePtr caerte()
{queuePtr q=(queuePtr)malloc(sizeof(queue));if(NULL==q){printf("申请失败\n");return NULL;}q->front=q->tail=0;printf("创建成功\n");return q;
}int empt(queuePtr q)
{if(NULL==q){printf("判空失败\n");return -1;}return q->front==q->tail;
}
int full(queuePtr q)
{if(NULL==q){printf("判满失败\n");return 0;}return (q->tail+1)%MAX==q->front;
}void Add(queuePtr q,DataType a)
{if(NULL==q||full(q)){printf("入队失败\n");return ;}q->data[q->tail]=a;q->tail=(q->tail+1)%MAX;return ;
}void show(queuePtr q)
{if(NULL==q||empt(q)){printf("遍历失败\n");return ;}for(int i=q->front;i%MAX!=q->tail;i=(i+1)%MAX){printf("%d->",q->data[i]);}putchar(10);return ;
}
void push(queuePtr q)
{if(NULL==q||empt(q)){printf("出队失败\n");return ;}printf("出队数据:%d\n",q->data[q->front]);q->front=(q->front+1)%MAX;return ;
}void size(queuePtr q)
{if(NULL==q){printf("失败\n");return ;}int a=0;for(int i=q->front;i%MAX!=q->tail;i++){a++;}printf("size= %d\n",a);return ;
}void My_free(queuePtr q)
{if(NULL==q){printf("销毁失败\n");return ;}free(q);printf("销毁成功\n");q=NULL;return;
}
头文件:
#ifndef __QUEUE__
#define __QUEUE__#include<stdio.h>
#include<stdlib.h>#define MAX 8#endiftypedef int DataType;typedef struct sequence
{DataType data[MAX];int front;int tail;
}queue,*queuePtr;queuePtr caerte();int empt(queuePtr q);int full(queuePtr q);void Add(queuePtr q,DataType a);void show(queuePtr q);void push(queuePtr q);void size(queuePtr q);void My_free(queuePtr q);
测试文件:main文件
#include"queue.h"int main()
{queuePtr q=caerte();Add(q,1);Add(q,2);Add(q,3);Add(q,4);Add(q,5);Add(q,6);Add(q,7);show(q);push(q);push(q);push(q);show(q);Add(q,77);show(q);Add(q,88);show(q);Add(q,99);show(q);size(q);My_free(q);q=NULL;return 0;
}
运行截图: