/* **************************
* Soure file of Queue
* *************************/
#include"Ex020_Queue2.h"
//实现Queue的函数,为了方便,放到了主函数所在的文件中,最好是单独建立实现函数的源文件
int QueueInit(Queue *q)
{
if(NULL == q)
return FAILE;
q->front = q->rear = NULL;
q->size = 0;
return SUCCESS;
}
int QueueDestroy(Queue *q)
{
QueueNode *temp = NULL;
if(NULL == q)
return FAILE;
if(q->size == 0)
{
printf("Queue is empty \n");
return SUCCESS;
}
while(q->size >0)
{
temp = q->front;
q->front = temp->next;
temp->next = NULL;
free(temp);
q->size -= 1;
}
q->front = q->rear = NULL;
return SUCCESS;
}
int QueuePrint(Queue *q)
{
QueueNode *temp = NULL;
if(NULL == q)
return FAILE;
if(q->size == 0)
{
printf("Queue is empty \n");
return SUCCESS;
}
printf("Elmt of Queue:");
temp = q->front;
while(temp != NULL)
{
printf("%d ",temp->elmt);
temp = temp->next;
}
printf("\n");
return SUCCESS;
}
int EnQueue(Queue *q,QueueElmt e)
{
QueueNode *node;
if(NULL == q)
return FAILE;
node = (QueueNode*)malloc(sizeof(QueueNode));
if( NULL != node)
{
if(q->size == 0)
q->front = q->rear = node;
else
{
q->rear->next = node;
q->rear = node;
}
node->elmt = e;
node->next = NULL;
q->size +=1;
return SUCCESS;
}
else
return FAILE;
}
int DeQueue(Queue *q,QueueElmt *e)
{
QueueNode * node;
if(NULL == q)
return FAILE;
if(q->size > 0 )
{
node = q->front;
*e = node->elmt;
q->front = node->next;
q->size -=1;
node->elmt =0;
node->next = NULL;
free(node);
return SUCCESS;
}
else
return FAILE;
}
int main()
{
int i = 0;
int result =0;
QueueElmt e;
Queue queue;
QueueInit(&queue);
QueuePrint(&queue);
while(i<5)
EnQueue(&queue,(++i));
result = EnQueue(&queue,9);
if(FAILE == result)
printf("EnQueue is failed \n");
else
QueuePrint(&queue);
DeQueue(&queue,&e);
printf("%d is deleted from Queue \n",e);
QueuePrint(&queue);
DeQueue(&queue,&e);
printf("%d is deleted from Queue \n",e);
QueuePrint(&queue);
DeQueue(&queue,&e);
printf("%d is deleted from Queue \n",e);
QueuePrint(&queue);
DeQueue(&queue,&e);
printf("%d is deleted from Queue \n",e);
QueuePrint(&queue);
DeQueue(&queue,&e);
printf("%d is deleted from Queue \n",e);
QueuePrint(&queue);
DeQueue(&queue,&e);
printf("%d is deleted from Queue \n",e);
QueuePrint(&queue);
result = DeQueue(&queue,&e);
if(FAILE == result)
printf("DeQueue is failed \n");
QueueDestroy(&queue);
QueuePrint(&queue);
return result;
}
C例子:队列(链式存储的方式)
需积分: 32 90 浏览量
2015-07-26
09:03:46
上传
评论
收藏 1KB GZ 举报
talk_8
- 粉丝: 6559
- 资源: 115
最新资源
- NT98336 SDK 114版本
- torch-1.8.1+cu111-cp38-cp38-linux-x86-64.whl +torchvision
- 计算机设计 - VB+ACCESS网络计时管理系统设计(源代码+系统),保证可靠运行,毕业生可参考,免费资源下载
- 计算机设计 - vb+ACCESS身份证管理系统设计(LW+源代码),保证可靠运行,毕业生可参考,免费资源下载
- ARCMAP自动编号工具
- W801学习笔记十三:掌机系统-系统基础组件-PNG-loader
- studydatastruct3
- XHS链接提取/作品采集工具
- general-exporter windows
- kotlin语法快速入门文档
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈