链队列的实现
来源:互联网 发布:js表单提交 编辑:程序博客网 时间:2024/06/04 00:10
//Queue.h#ifndef QUEUE_H#define QUEUE_H#include <stdlib.h>#include <stdio.h>#define OK 1typedef int QElemType;typedef int Status;typedef struct QNode{ QElemType data; struct QNode *next;}QNode, *QueuePtr;typedef struct{ QueuePtr front; QueuePtr rear;}LinkQueue;Status InitQueue(LinkQueue &Q);Status EnQueue(LinkQueue &Q, QElemType e);Status DeQueue(LinkQueue &Q, QElemType &e);Status DestroyQueue(LinkQueue &Q);#endif
//Queue.cpp#include "Queue.h"Status InitQueue(LinkQueue &Q){ Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if (!Q.front) printf("分配内存失败!"); Q.front->next = NULL; return OK;}Status EnQueue(LinkQueue &Q, QElemType e){ QueuePtr p = (QueuePtr)malloc(sizeof(QNode)); if (!p) printf("没有可用内存!"); p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return OK;}Status DeQueue(LinkQueue &Q, QElemType &e){ if (Q.front == Q.rear) printf("队列为空!"); QueuePtr p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear == p) Q.rear = Q.front; free(p); return OK;}Status DestroyQueue(LinkQueue &Q){ while (Q.front) { Q.rear = Q.front->next; free(Q.front); Q.front = Q.rear; } return OK;}
//main.cpp#include "Queue.h"int main(){ int e; LinkQueue Q; InitQueue(Q); EnQueue(Q, 1); EnQueue(Q, 2); EnQueue(Q, 3); DeQueue(Q, e); printf("%d\n", e); DestroyQueue(Q); return 0;}
运行结果图 :
0 0
- 链队列的实现
- 链队列的实现
- 链队列的实现
- 链队列的实现
- 链队列的实现
- 队列的实现-顺序队列和链队列
- 链表实现的队列
- 队列的链表实现!
- 队列的链表实现
- C++ 链队列的实现
- 队列的链表实现
- 队列的链表实现
- 队列的链表实现
- 链队列的C++实现
- 队列的链表实现
- 链队列的简单实现
- 队列的链表实现
- 队列的链表实现
- JSP原理,语法,内置对象
- C++头文件
- solr系列教程:第一节 solr的部署
- 矩阵的平移,缩放和旋转
- Docker中apache-tomcat启动慢的问题
- 链队列的实现
- MFC ProgressctrlX的
- iOS开发之多线程
- BAT相关知识
- Linux下安装eclipse的C/C++集成开发环境
- 让整个控制器的view都是 UIWebView
- Netty -- 内存管理
- ThinkPHP3.2.3 Excel 导入导出
- LinearLayout线性布局