首页 > 代码库 > 顺序队列的实现
顺序队列的实现
顺序队列的数据结构如下:
typedef struct { ElemType data[MaxSize]; int front,rear; //front队首指针,rear队尾指针 }SqQueue;
实现下列函数:
void InitQueue(SqQueue* &q); //初始化队列 void ClearQueue(SqQueue* &q); //清空队列 int QueueEmpty(SqQueue* q); //判断队列是否为空 int QueueLength(SqQueue* q); //求队列长度 int enQueue(SqQueue* &q,ElemType e); //元素入队 int deQueue(SqQueue* &q,ElemType e); //元素出队 void DispQueue(SqQueue* 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 { ElemType data[MaxSize]; int front,rear; //front队首指针,rear队尾指针 }SqQueue; void InitQueue(SqQueue* &q); //初始化队列 void ClearQueue(SqQueue* &q); //清空队列 int QueueEmpty(SqQueue* q); //判断队列是否为空 int QueueLength(SqQueue* q); //求队列长度 int enQueue(SqQueue* &q,ElemType e); //元素入队 int deQueue(SqQueue* &q,ElemType e); //元素出队 void DispQueue(SqQueue* q); //输出队列 void InitQueue(SqQueue* &q){ q=(SqQueue *)malloc(sizeof(SqQueue)); q->front=q->rear=0; } void ClearQueue(SqQueue* &q){ free(q); } int QueueEmpty(SqQueue* q){ return (q->front==q->rear); } int QueueLength(SqQueue* q){ int count=0; int k=q->rear; int j=q->front; while(k!=j){ j=(j+1)%MaxSize; count++; } return count; } int enQueue(SqQueue* &q,ElemType e){ if(((q->rear+1)%MaxSize)==q->front)return 0; else{ q->rear=(q->rear+1)%MaxSize; q->data[q->rear]=e; return 1; } } int deQueue(SqQueue* &q,ElemType e){ if(q->rear==q->front)return -1; else{ q->front=(q->front+1)%MaxSize; e=q->data[q->front]; return 1; } } void DispQueue(SqQueue* q){ int k=q->rear; int j=q->front; while(k!=j){ j=(j+1)%MaxSize; cout<<q->data[j]<<" "; } cout<<endl; } int main(){ SqQueue* 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); } for(int i=0;i<GET_ARRAY_LENGTH(a);i++){ deQueue(q,a[i]); DispQueue(q); } return 0; }
运行结果:
顺序队列的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。