数组如何实现队列?我们可以定义队列结构,成员有一维数组,一个记录队列头元素位置front,一个记录队列尾元素位置rear组成。
队列结构具体定义:
队列结构定义
C
1 2 3 4 5 6 7 |
typedef int Position; struct QNode { ElementType *Data; /* 存储元素的数组 */ Position Front, Rear; /* 队列的头、尾指针 */ int MaxSize; /* 队列最大容量 */ }; typedef struct QNode *Queue; |
- 创建队列
创建队列
C
1 2 3 4 5 6 7 8 |
Queue CreatQueue(int MaxSize) { Queue Q = (Queue)malloc(sizeof(QNode)); Q->Data = (ElementType*)malloc(MaxSize*sizeof(ElementType)); Q->Front = Q->Rear = 0; Q->MaxSize = MaxSize; return Q; } |
- 判断队列满
队满判断
C
1 2 3 4 |
bool IsFull(Queue Q) { return ((Q->Rear+1)%Q->MaxSize == Q->Front); } |
- 入队操作
入队
C
1 2 3 4 5 6 7 8 9 10 11 |
bool AddQ(Queue Q,ElementType X) { if (IsFull(Q)){ printf("队列满"); return false; }else{ Q->Rear = (Q->Rear+1)%Q->MaxSize; Q->Data[Q->Rear] = X; return true; } } |
- 判断队列空
队列空
C
1 2 3 4 |
bool IsEmpty(Queue Q) { return (Q->Front == Q->Rear); } |
- 出队操作
出队
C
1 2 3 4 5 6 7 8 9 10 |
ElementType DeleteQ(Queue Q) { if (IsEmpty(Q)){ printf("队列空"); return false; }else{ Q->Front = (Q->Front+1)%Q->MaxSize; return Q->Data[Q->Front]; } } |
相关文章:
- 结构数组表示一元多项式并计算相加
- 一元多项式用数组表示,只用表示非零项。每个非零项都包含指数和系数两部份,这样可以用结构数组来表示。 这样表示后做相加运算时,一定要先排好序。...
- 用数组表示一元多项式并计算
- 用数组如何表示多项式: 1.多项式项数n: ?将数组个数定义时比n大就可以表示出n项 2.各项系数ai :? 数组内值表示项式系数 3.指数i? :? ? ? ? ? ? ? 数组的下标用来表示多项式系数...
- 链表结构表示一元多项式非零项并计算相加
- 一元多项式用链表表示,只用表示非零项。每个非零项都包含指数和系数两部份,这样可以用链表结构来表示。 注:存一元多项式非零项时,要按指数大小有序存储,为了方便相加计算。...
- 线性表结构、描述、操作
- 什么是线性表? 线性表的一些概念 线性表主要操作 ...
- 用数组实现线性表详解代码
- 用数组实现线性表,就是将数据都存放到数组中,然后写函数实现线性表的基本操作。 数组实现线性表基本操作代码: 数组实现线性表优点: 数组实现线性表缺点: ...
- 用链式存储实现线性表详解代码
- 用链式存储实现思想:不要求逻辑上相邻的两个元素物理上相邻,通过“链”建立起数据之间的逻辑关系。逻辑相邻:指两个元素是挨着的,(比如1,2,3)物理相邻:指两个元素存在内存上是挨着的,地址相邻(比如0x00000000, 0x00000004)...
- 用数组实现栈数据结构
- 用数组实现栈,它将是顺序存储结构,通常由一个一维数组和一个记录栈顶元素位置的变量组成。...
- 如何用一个数组实现两个堆栈
- 用一个数组实现两个堆栈,最好的方法就是一个从头写入,一个从尾写入。这样数组实现堆栈空间的使用效率最高。...
- 链式存储如何实现堆栈
- 栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链表的栈顶进行。 栈顶应该指向链头。有人就会问了指尾不行吗?不可以的。...
- 队列概念及其数据类型详解
- 队列(queue):具有一定操作约束的线性表。 具体约束是什么?...