顺序队列
来源:互联网 发布:好的算法书籍推荐 编辑:程序博客网 时间:2024/06/07 22:23
队列也是一种运算受限的线性表,只允许在表的一端进行插入,另一端进行删除操作。进行插入的一端称作队尾,进行删除的一端称作队首或队头。
队列的操作:
向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素。
从队列中删除元素称为出队或离队,元素出队后,其后继元素称为队首元素。
特点:先进先出(FIFO)
队列的存储结构
队列描述:
data 数据元素:具有同一类型 ElemType,上限MaxSize
front 当前队首:指向队头元素前一个位置
rear 当前队尾:指向队尾元素
typedef struct{ ElemType data[MaxSize]; int front,rear;}SqQueue;
顺序队四要素:
空队:front==rear;
堆满:rear==MaxSize-1;
进队:rear++;data[rear] = e;
出队:front++;e = data[front];
顺序队功能函数
①初始化队列
void InitQueue(SqQueue *&q){ q = (*SqQueue)malloc(sizeof(SqQueue)); q->front = q->rear = -1; }
②销毁队列
void DestroyQueue(SqQueue *&q){ free(q);}
③空队列
bool EmptyQueue(SqQueue *q){ return (q->front==q->rear);}
④进队列EnQueue
条件:队不满
操作:先将rear加1,将元素添加到尾指针位置
bool EnQueue(SqQueue *&q,ElemType e){ if(q->rear==MaxSize-1) return false; q->rear++; q->data[q->rear] = e; return true;}
⑤出队列DeQueue
条件:队列不为空
操作:front加1,将front指向输出
bool DeQueue(SqQueue *&q,ElemType &e){ if(q->rear==q->front) return false; q->front++; e = q->data[q->front]; return true;}
缺陷:随着不断的入队出队,rear,front指向不断上移,直到都指向表的上限,此时,队列中并没有有效元素,但又不能继续插入,front向下的存储空间也无法再此使用,造成严重浪费。
阅读全文
0 0
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 主成分分析(PCA)和基于核函数的主成分分析(KPCA)入门
- PowerDesigner中设置数据库类型,设置default value,Comment,自增属性,以及数据库设计中的需要考虑的示项,带有小数点的数据显示
- kernel版本号的修改
- 2017 Multi-University Training Contest
- matlab2c使用c++实现matlab函数开发配置全解
- 顺序队列
- 2017暑假训练之线段树
- C指针类型小结
- spring @Autowire详解
- 设计模式之工厂方法模式
- ccf 201612-1 中间数 (100分)
- 随笔 (关于引用)
- spark问题与排查
- PopupWindow 4.x上不同的实例方式导致的bug