用C语言做循环队列的操作验证
数据结构课程设计用的.谢谢!
数据结构课程设计用的.谢谢!
答案://文件名称:LoopQueue.h//功能说明:实现了循环队列结构//使用说明:包含本文件前必须定义QUEUE_ELEMENT_TYPE,它表示队列中元素的类型,还可定义队列的大小QUEUE_MAX_SIZE,默认为// 64+1,由于队列中始终要有一个空元素,所以实际最多可存64个元素。 /////////////////////////////////////////////////////////////////////////////////////////////////////#include#include #ifndef BOOLEAN#define BOOLEAN int#endif#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif//循环队列的大寸(最大尺寸) #ifndef QUEUE_MAX_SIZE#define QUEUE_MAX_SIZE 64+1#endif#define LOOPQUEUEASSERT assert(pLQ != 0 && pLQ->front >=0 && pLQ->rear >= 0 && QUEUE_MAX_SIZE > 1)struct LoopQueue{ QUEUE_ELEMENT_TYPE data[QUEUE_MAX_SIZE]; long front; long rear;};//初始化循环队列 void LoopQueue_Init(LoopQueue *pLQ){ pLQ->front = 0; pLQ->rear = 0; LOOPQUEUEASSERT;}//判断循环队列是否为空 BOOLEAN LoopQueue_IsEmpty(LoopQueue *pLQ){ LOOPQUEUEASSERT; return pLQ->rear==pLQ->front; }//获取循环队列中存储的元素的个数 long LoopQueue_Length(LoopQueue *pLQ){ LOOPQUEUEASSERT; return (pLQ->rear-pLQ->front+QUEUE_MAX_SIZE)%QUEUE_MAX_SIZE;}//入队 void LoopQueue_In(LoopQueue *pLQ, QUEUE_ELEMENT_TYPE element){ LOOPQUEUEASSERT; if(pLQ->front==(pLQ->rear+1)%QUEUE_MAX_SIZE) { pLQ->rear=(pLQ->rear+1)%QUEUE_MAX_SIZE; pLQ->data[pLQ->rear] = element; pLQ->front=(pLQ->front+1)%QUEUE_MAX_SIZE; } else { pLQ->rear=(pLQ->rear+1)%QUEUE_MAX_SIZE; pLQ->data[pLQ->rear] = element; }}//出队 BOOLEAN LoopQueue_Out(LoopQueue *pLQ, QUEUE_ELEMENT_TYPE* pElement){ LOOPQUEUEASSERT; if(LoopQueue_IsEmpty(pLQ)) return FALSE; pLQ->front=(pLQ->front+1)%QUEUE_MAX_SIZE; *pElement = pLQ->data[pLQ->front]; return TRUE;}本文来自CSDN博客 http://blog.csdn.net/yeyuboy/archive/2006/05/18/743414.aspx
上一个:C语言中的是getch什么函数啊
下一个:谁能用C语言编一个链式表