c语言简单实现队列

来源:互联网 发布:asp.net 4高级编程pdf 编辑:程序博客网 时间:2024/05/16 14:09
#ifndef  _QUEUE_H_#define  _QUEUE_H_#if 1typedef struct queue{int *buff;int putIndex;int getIndex;int count;int maxSize;}Queue,*pQueue;#else#include "doulist.h"typedef struct queue{Pnode head;int maxSize;int count;}Queue;#endifQueue *createQueue(int maxSize);int destroyQueue(Queue *pQueue);int enQueue(Queue *pQueue, int data);int deQueue(Queue *pQueue, int *pdata);int count(Queue *pQueue);int maxSize(Queue *pQueue);int isEmpty(Queue *pQueue);int isFull(Queue *pQueue);#endif

---------------------------------------------头文件-------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>#include "queue.h"Queue *createQueue(int maxSize){pQueue p = (pQueue)malloc(sizeof(Queue));if (NULL == p){return NULL;}p->buff = (int *)malloc(sizeof(int)*maxSize);if (NULL == p->buff){free(p);return NULL;}p->putIndex = 0;p->getIndex = 0;p->count = 0;p->maxSize = maxSize;}int destroyQueue(Queue *pQueue){if (NULL == pQueue){return -1;}if (NULL == pQueue->buff){return -2;}free(pQueue->buff);free(pQueue);return 0;}int enQueue(Queue *pQueue, int data){if (NULL == pQueue){return -1;}if (NULL == pQueue->buff){return -2;}if (isFull(pQueue)){return -3;}if (pQueue->putIndex == pQueue->maxSize){pQueue->putIndex = 0;}pQueue->buff[pQueue->putIndex] = data;pQueue->putIndex++;pQueue->count++;}int deQueue(Queue *pQueue, int *pdata){if (NULL == pQueue){return -1;}if (NULL == pQueue->buff){return -2;}if (isEmpty(pQueue)){*pdata = 0;return -3;}if (pQueue->getIndex == pQueue->maxSize){pQueue->getIndex = 0;}*pdata = pQueue->buff[pQueue->getIndex];pQueue->getIndex++;pQueue->count--;}int count(Queue *pQueue){if (NULL == pQueue){return -1;}return pQueue->count;}int maxSize(Queue *pQueue){if (NULL == pQueue){return -1;}return pQueue->maxSize;}int isEmpty(Queue *pQueue){if (NULL == pQueue){return -1;}if (0==pQueue->count){return 1;}return 0;}int isFull(Queue *pQueue){if (NULL == pQueue){return -1;}if (pQueue->count == pQueue->maxSize){return 1;}return 0;}int main(){pQueue p = createQueue(10);int data = 0;enQueue(p, 1);enQueue(p, 2);enQueue(p, 3);enQueue(p, 4);enQueue(p, 5);enQueue(p, 6);enQueue(p, 7);enQueue(p, 8);enQueue(p, 9);enQueue(p, 10);printf("count=%d    getindex=%d,     putindex=%d               ", p->count, p->getIndex, p->putIndex);deQueue(p, &data);printf("data=%d,count=%d    getindex=%d,     putindex=%d\n", data, p->count, p->getIndex, p->putIndex);printf("count=%d    getindex=%d,     putindex=%d               ", p->count, p->getIndex, p->putIndex);deQueue(p, &data);printf("data=%d,count=%d    getindex=%d,     putindex=%d\n", data, p->count, p->getIndex, p->putIndex);enQueue(p, 12);enQueue(p, 17);for (int i = 0; i < 15; i++){printf("count=%d    getindex=%d,     putindex=%d               ", p->count, p->getIndex, p->putIndex);deQueue(p, &data);printf("data=%d,count=%d    getindex=%d,     putindex=%d\n", data, p->count,p->getIndex,p->putIndex);}getchar();}


0 0