顺序队列的操作
来源:互联网 发布:密度聚类算法处理轨迹 编辑:程序博客网 时间:2024/06/08 20:09
例1:完成Queue CreateQueue(int MaxElements)函数,该函数创建一个基于数组的队列,并返回队列指针,其中MaxElements为预分配的数组单元数。
Queue CreateQueue(int MaxElements) //1,2,3步骤类似于数组栈的创建。
{
Queue Q=(Queue)malloc(sizeof(QueueRecord)); 1
Q->Front=0;
Q->Rear=-1;
Q->Capacity=MaxElements; 2
Q->Array=(ElemType*)malloc(sizeof(ElemType)*MaxElements); 3
Q->Size=0;
return Q;
}
例2:顺序队列的判满即队尾指针Q->rear==Q->capacity-1;
例3:完成Queue DisposeQueue(Queue Q)函数,该函数销毁队列Q(释放所有空间)并返回NULL指针,其中Q是基于数组的非循环队列。
Queue DisposeQueue(Queue Q)
{
free(Q->Array);
return NULL;
}
例4:将顺序队列置空。按照题意
void MakeEmpty(Queue Q)
{
Q->Front=0;
Q->Rear=-1;
Q->Size=0;
}
例5:完成ElemType FrontAndDequeue(Queue Q)函数,该函数返回非空队列Q的队首数据并将队首数据出队,其中Q是基于数组的非循环队列。
ElemType FrontAndDequeue(Queue Q)
{
ElemType x;
x=Q->Array[Q->Front];
Q->Front++; //队首指针后移,或者表达为Q->front=(Q->front+1)%Maxsize;
Q->Size--;
return x;
}
例6:完成void Enqueue(Queue Q,ElemType X)函数,该函数把数据X进入队列,如果队列已满,则什么都不做,其中Q是基于数组的非循环队列。
void Enqueue(Queue Q,ElemType X)
{
if(Q->Size!=Q->Capacity) //如果队列未满
{
Q->Size++;
Q->Rear++; //从队尾入队,队尾指针后移。
Q->Array[Q->Rear]=X;
}
}
例7:完成void Dequeue(Queue Q);函数,该函数将队列Q的队首数据出队,如果队列为空,则什么都不做。其中Q是基于数组的非循环队列。
void Dequeue(Queue Q)
{
if(Q->Size!=0)
{
Q->Front++;
Q->Size--;
}
}
- 顺序队列的操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作;
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的算法操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 队列的顺序存储的基本操作.....
- 队列的顺序存储的基本操作.....
- 队列的顺序存储结构与操作
- 循环顺序队列的基本操作
- 队列的顺序存储结构与操作
- 数据结构顺序队列的各种操作
- 队列的顺序存储及其基本操作
- 顺序队列(非循环)的基本操作
- java android bytebuffer的用法
- Hive优化的基本方法
- Get新技能!程序员也能玩转的集群监控
- 判断闰年的巧妙算法
- 简单密码问题
- 顺序队列的操作
- 二叉树——不建树遍历
- Git使用总结
- React学习之ES6学习Day1
- jenkins 自动构建docker 推送镜像发布镜像
- Java IO流学习总结
- CSDN赚积分
- HDU-2072
- Anaconda多环境多版本python配置及环境切换