C语言实现链队列
记录一下C语言实现的链队列代码,供大家参考,具体内容如下
#include#include #include typedefintElemType; //链队列的结点定义 typedefstructnode{ ElemTypeval; structnode*next; }QueueNode; //链队列的定义,包含队头指针和队尾指针 typedefstructqueue{ QueueNode*front; QueueNode*rear; }LinkedQueue; //初始化队列 LinkedQueue*initQueue(){ LinkedQueue*queue=(LinkedQueue*)malloc(sizeof(LinkedQueue)); queue->front=(QueueNode*)malloc(sizeof(QueueNode)); queue->front->next=NULL; queue->rear=queue->front; } //元素入队 voidenQueue(LinkedQueue*queue,ElemTypeelem){ QueueNode*node=(QueueNode*)malloc(sizeof(QueueNode)); node->val=elem; node->next=NULL; queue->rear->next=node; queue->rear=node; } //队列是否为空 boolisQueueEmpty(LinkedQueue*queue){ returnqueue->front==queue->rear; } //元素出队 ElemTypedeQueue(LinkedQueue*queue){ if(!isQueueEmpty(queue)){ QueueNode*p=queue->front; queue->front=p->next; ElemTypee=queue->front->val; free(p); returne; } returnNULL; } intmain() { LinkedQueue*queue=initQueue(); inti; for(i=0;i<20;i++){ enQueue(queue,i); } while(!isQueueEmpty(queue)){ printf("deQueue:%d\n",deQueue(queue)); } return0; }
需要注意的是:
- 初始化队列时,队头和队尾都指向同一个结点(头结点,不存储数据);
- 判断队列是否为空,即判断队头指针和队尾指针是否相同;
- 队头元素是当前front指针的next结点中的值
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。