队列的数组实现
来源:互联网 发布:excel中找出相同数据 编辑:程序博客网 时间:2024/05/21 07:15
法一:
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100//为了节省空间,采用循环数组,用到循环加1//非空时,front和rear指向端点元素//所以rear初始化为0,front为1//满的时候,一种情况是,front为1,rear为MAXSIZE-1,满足(queue->rear+2)%queue->capacity==queue->front//满的时候,也可能rear,front均在中间,但均满足(queue->rear+2)%queue->capacity==queue->front//满的时候,数组也有一个空没元素//空的时候,(queue->rear+1)%queue->capacity==queue->frontstruct queuerecord{ int front; int rear; int capacity;//数组容量 //int size;//当前元素个数 本来用来判断满没满,既然有了循环加1,就不用了吧 int *data;};struct queuerecord* CreateAndInit(struct queuerecord* queue){ queue=(struct queuerecord *)malloc(sizeof(struct queuerecord)); queue->front=1; queue->rear=0; queue->capacity=MAXSIZE; //queue->size=0; queue->data=(int *)malloc(sizeof(int)*MAXSIZE); return queue;}void Enqueue(struct queuerecord * queue,int number){ if((queue->rear+2)%queue->capacity==queue->front){ printf("The queue is full\n"); return; } //queue->size++; queue->rear=(queue->rear+1)%queue->capacity; queue->data[queue->rear]=number; return;}void Dequeue(struct queuerecord* queue){ if((queue->rear+1)%queue->capacity==queue->front){ printf("The queue is empty\n"); return; } queue->front=(queue->front+1)%queue->capacity; return;}int main(){ struct queuerecord *queue; queue=CreateAndInit(queue); for(int i=1;i<=10;i++) Enqueue(queue,i); for(int i=1;i<=3;i++) Dequeue(queue); printf("%d %d\n",queue->front,queue->rear); for(int i=queue->front;i<=queue->rear;i=(i+1)%MAXSIZE) printf("%d ",queue->data[i]); return 0;}法二:
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100//为了节省空间,采用循环数组,用到循环加1//非空时,front指向端点元素,rear指向端点的下一个位置,rear处无元素//所以rear初始化为0,front为0//满的时候,一种情况是,front为0,rear为MAXSIZE-1,满足(queue->rear+1)%queue->capacity==queue->front//满的时候,也可能rear,front均在中间,但均满足(queue->rear+1)%queue->capacity==queue->front//满的时候,数组也有一个空没元素//空的时候,queue->rear==queue->frontstruct queuerecord{ int front; int rear; int capacity;//数组容量 //int size;//当前元素个数 本来用来判断满没满,既然有了循环加1,就不用了吧 int *data;};struct queuerecord* CreateAndInit(struct queuerecord* queue){ queue=(struct queuerecord *)malloc(sizeof(struct queuerecord)); queue->front=0; queue->rear=0; queue->capacity=MAXSIZE; //queue->size=0; queue->data=(int *)malloc(sizeof(int)*MAXSIZE); return queue;}void Enqueue(struct queuerecord * queue,int number){ if((queue->rear+1)%queue->capacity==queue->front){ printf("The queue is full\n"); return; } //queue->size++; queue->data[queue->rear]=number;//先进新元素再更改rear queue->rear=(queue->rear+1)%queue->capacity; return;}void Dequeue(struct queuerecord* queue){ if(queue->rear==queue->front){ printf("The queue is empty\n"); return; } queue->front=(queue->front+1)%queue->capacity; return;}int main(){ struct queuerecord *queue; queue=CreateAndInit(queue); for(int i=1;i<=10;i++) Enqueue(queue,i); for(int i=1;i<=3;i++) Dequeue(queue); printf("%d %d\n",queue->front,queue->rear); for(int i=queue->front;i<queue->rear;i=(i+1)%MAXSIZE) printf("%d ",queue->data[i]); return 0;}
1 0
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 数组实现的队列
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 数组实现的队列
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现
- 队列的数组实现(循环队列)
- 静态数组实现的队列
- Java调用jama实现矩阵运算
- OSI七层模型理解
- 关于面向对象的三个基本特征 封装、继承、多态 ’
- JAVA之网络编程基础
- 客户坐标转屏幕坐标
- 队列的数组实现
- 使用签名校验可以限制Android设备刷入任意image
- 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次? 都分别是什么时间?你怎样算出来的?(5分钟-15分钟)
- 屏幕坐标转客户区坐标
- JavaScript中undefined和null的异同
- scala学习笔记
- 对26个英文字母进行huffman编码
- pycallgraph 追踪Python函数内部调用
- 鼠标右键菜单