c语言简单实现队列
2016-12-07 17:25
405 查看
#ifndef _QUEUE_H_ #define _QUEUE_H_ #if 1 typedef 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; #endif Queue *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();
}
相关文章推荐
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
- C语言实现一个最简单的队列
- 数据结构 --静态队列的一个简单的C语言代码实现
- Queue--队列(c语言简单实现)
- C语言指针实现简单队列
- 用C语言实现简单链式队列结构
- CycleQueue--循环队列(c语言简单实现)
- 队列的简单实现--C语言
- 队列的简单实现--C语言
- c语言用简单数组实现循环队列
- 用C语言实现简单循环队列结构
- C语言使用数组实现简单队列
- C语言队列QUEUE简单实现
- C语言实现数据结构中的链队列
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- 一个大学C语言试题的简单实现--员工信息管理程序
- 最简单的win32程序(c语言实现)
- 用C语言实现简单菜单
- 用C语言实现简单密码输入(初稿)
- C语言简单数据缓存实现