链式队列的实现
来源:互联网 发布:音频算法工程师招聘 编辑:程序博客网 时间:2024/05/16 18:36
链式队列数据结构如下:
typedef struct qnode{ElemType data; struct qnode* next; //指向下一节点指针 }QNode;typedef struct{QNode* front; //队首指针 QNode* rear; //队尾指针 }ListQueue;
实现以下函数:
void InitQueue(ListQueue* &q); //初始化队列 void ClearQueue(ListQueue* &q); //清空队列 int QueueEmpty(ListQueue* q); //判断队列是否为空 int QueueLength(ListQueue* q); //求队列长度 void enQueue(ListQueue* &q,ElemType e); //元素入队 int deQueue(ListQueue* &q,ElemType &e); //元素出队 void DispQueue(ListQueue* q); //输出队列
具体实现代码:
#include <stdio.h>#include <stdlib.h>#include <iostream>#define ElemType int #define MaxSize 5#define SWAP(A,B) a^=b;b^=a;a^=b #define GET_ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0]))using namespace std;typedef struct qnode{ElemType data; struct qnode* next; //指向下一节点指针 }QNode;typedef struct{QNode* front; //队首指针 QNode* rear; //队尾指针 }ListQueue;void InitQueue(ListQueue* &q); //初始化队列 void ClearQueue(ListQueue* &q); //清空队列 int QueueEmpty(ListQueue* q); //判断队列是否为空 int QueueLength(ListQueue* q); //求队列长度 void enQueue(ListQueue* &q,ElemType e); //元素入队 int deQueue(ListQueue* &q,ElemType &e); //元素出队 void DispQueue(ListQueue* q); //输出队列 void InitQueue(ListQueue* &q){q=(ListQueue* )malloc(sizeof(ListQueue));q->front=q->rear=NULL;}void ClearQueue(ListQueue* &q){ QNode* p=q->front; QNode* r; while(p->next!=NULL){ r=p->next; free(p); p=r; } free(p); free(q);}int QueueEmpty(ListQueue* q){return (q->front==NULL); } int QueueLength(ListQueue* q){QNode* p=q->front;int count=0;while(p!=NULL){p=p->next;count++;}return count;}void DispQueue(ListQueue* q){QNode* p=q->front;while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;}void enQueue(ListQueue* &q,ElemType e){QNode* add=(QNode* )malloc(sizeof(QNode));add->data=e;add->next=NULL;if(q->front==NULL){q->front=add;q->rear=add;}else{q->rear->next=add;q->rear=add;}}int deQueue(ListQueue* &q,ElemType &e){QNode* p=q->front;if(q->front==NULL)return 0;else{e=q->front->data;q->front=p->next;if(q->front==NULL)q->rear=NULL;free(p);return 1;}}int main(){ListQueue* q=NULL;int a[]={1,2,3,4};InitQueue(q);for(int i=0;i<GET_ARRAY_LENGTH(a);i++){enQueue(q,a[i]);DispQueue(q);}deQueue(q,a[0]);deQueue(q,a[0]);enQueue(q,a[0]);DispQueue(q);for(int i=0;i<GET_ARRAY_LENGTH(a);i++){deQueue(q,a[i]);DispQueue(q);}return 0;}
运行结果:
0 0
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现。
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 队列的链式实现
- 链式队列的实现
- 主目录中文路径名转英文
- malloc函数
- 《算法导论》学习心得(六)—— 计数排序(Java)
- 【阅读】《head first jquery》第六章——jquery和javascript
- Unity3D学习第一日之(游戏的发展趋势、以及Unity3D界面与编辑器布局和地形的创建等..
- 链式队列的实现
- 进程地址空间的布局以及进程堆栈帧 ---缓冲攻击
- RGB到XYZ转化
- Cracking the coding interview--Q4.3
- 关于安装oracle出现错误,INS-30131,的解决办法
- 各种总线知识总结汇总
- SQLSERVER的中文排序规则
- Java web开发环境搭建
- iOS 开发中使用rgb颜色