当前位置:   article > 正文

c语言循环队列的销毁,C语言循环队列

queue循环结束后会不会自动销毁

参考自维基百科:

含测试代码,详细注释:

#include

#include

#include

/*循环队列 C语言实现

*2011-04-28

*liliming123@sina.com

*/

#ifndef QElementType

#define QElementType int

#endif

#ifndef MAX_SIZE

#define MAX_SIZE 500

#endif

typedef struct

{

QElementType *base;//存储数据

int front;//指向队列头

int rear;//指向队列尾

}CirQueue;

void InitCirQueue(CirQueue *Q)

{//初始化循环队列

//申请空间

Q->base = (QElementType *)malloc(MAX_SIZE*sizeof(QElementType));

//内存检查

if (!Q->base)

exit(0);

//初始条件,空队列

Q->front = Q->rear = 0;

}

void DestroyCirQueue(CirQueue *Q)

{//销毁队列

if (Q->base)

free(Q->base);

Q->base = NULL;

Q->front = Q->rear = 0;

}

void ClearCirQueue(CirQueue *Q)

{//清空队列

Q->front = Q->rear = 0;

}

bool IsEmptyCirQueue(CirQueue *Q)

{//循环队列是否为空,为空返回true

if (Q->front == Q->rear)

return true;

else

return false;

}

int LengthOfCirQueue(CirQueue *Q)

{//获得队列的大小

return (Q->rear - Q->front + MAX_SIZE)%MAX_SIZE;

}

bool InsertCirQueue(CirQueue *Q, QElementType e)

{//添加元素到队列,添加成功返回true

//判断队列是否已满

if ((Q->rear+1)%MAX_SIZE == Q->front)

return false;

Q->base[Q->rear] = e;

Q->rear = (Q->rear + 1) % MAX_SIZE;

return true;

}

bool DelCirQueue(CirQueue *Q, QElementType *e)

{//删除元素,值保存在e中,删除成功返回true

if (Q->front == Q->rear)

return false;

*e = Q->base[Q->front];

Q->front = (Q->front + 1) % MAX_SIZE;

return true;

}

void PrintCirQueue(CirQueue *Q)

{//打印队列

if (IsEmptyCirQueue(Q))

return;

printf("the Queue is:");

int i = Q->front;

while (i != Q->rear)

{

printf("%d ",Q->base[i]);

i = (i+1)%MAX_SIZE;

}

printf("/n");

}

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

//测试

CirQueue *test;

test = (CirQueue *)malloc(sizeof(CirQueue));

InitCirQueue(test);

InsertCirQueue(test, 1);

InsertCirQueue(test, 2);

InsertCirQueue(test, 3);

InsertCirQueue(test, 4);

InsertCirQueue(test, 5);

PrintCirQueue(test);

int temp;

DelCirQueue(test, &temp);

printf("the delete data is : %d/n", temp);

PrintCirQueue(test);

free(test);

test = NULL;

getchar();

return a.exec();

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/646406
推荐阅读
相关标签
  

闽ICP备14008679号