长春网站建设招代理,网站自动更新时间代码,wordpress搜索页如何建,拓者吧室内设计网模型定义
队列#xff08;Queue#xff09;简称队#xff0c;也是一种操作受限的线性表#xff0c;只允许在表的一端进行插入#xff0c;而在表的另一端进行删除。向队列中插入元素称为入队或进队#xff1b;删除元素称为出队或离队。
队头#xff08;Front#xff09;Queue简称队也是一种操作受限的线性表只允许在表的一端进行插入而在表的另一端进行删除。向队列中插入元素称为入队或进队删除元素称为出队或离队。
队头Front允许删除的一端又称队首。
队尾Rear允许插入的一端。 循环队列元素入队 循环队列元素出队 队列的链式存储
队列的链式表示称为链队列它实际上是一个同时带有队头指针和队尾指针的单链表。头指针指向队头结点尾指针指向队尾结点即单链表的最后一个结点。
动画网站https://www.cs.usfca.edu/~galles/visualization/QueueLL.html 代码 流程判断循环队列是否为空入队出队 #include stdio.h#define MaxSize 5
typedef int ElemType;
typedef struct{ElemType data[MaxSize];//数组,存储MaxSize - 1个元素int front,rear;//队列头,队列尾
}SqQueue;void InitQueue(SqQueue Q){Q.front Q.rear 0;//初始化循环队列,就是让头和尾都指向零号
}//普安段循环队列是否为空
bool isEmpty(SqQueue Q){return Q.rear Q.front;
}//入队
bool EnQueue(SqQueue Q,ElemType x){
// 判断循环队列是否满了,满了就不能入队了if((Q.rear 1) % MaxSize Q.front){return false;}Q.data[Q.rear] x;//放入元素Q.rear (Q.rear 1) % MaxSize;//rear 要1,如果大于数组最大下标,回到开头return true;}//出队
bool DeQueue(SqQueue Q,ElemType x){if(Q.rear Q.front){//队列为空,无法出队return false;}x Q.data[Q.front];//出队Q.front (Q.front 1) % MaxSize;return true;
}int main(){SqQueue Q;InitQueue(Q);bool ret;ret isEmpty(Q);if(ret){printf(SqQueue is Empty\n);}else{printf(SqQueue is not Empty\n);}EnQueue(Q,3);EnQueue(Q,4);EnQueue(Q,5);ret EnQueue(Q,6);ret EnQueue(Q,7);if(ret){printf(EnQueue success\n);}else{printf(EnQueue failed\n);}ElemType element;ret DeQueue(Q,element);if(ret){printf(DeQueue success\n);}else{printf(DeQueue failed\n);}return 0;
}
效果