实现顺序队列
来源:互联网 发布:多益网络找回 编辑:程序博客网 时间:2024/04/28 10:59
队列(queue)在计算机科学中,是一种先进先出的线性表。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
队列可以采用顺序存储方式来实现(称为顺序队列),或者采用链式存储方式来实现(称为链式队列)。
实现顺序队列需要注意:
(1)采用顺序存储方式,需要预先分配空间,data[maxlen];
(2)采用循环结构克服“假溢出”问题,定义 rear + 1 = front为队列满状态;
(3)顺序队列的应用:输出杨辉三角形。
以下为实现顺序队列的代码,在vs2010上测试通过:
#include <iostream>using namespace std;#define maxlen 30class myQueue{public: myQueue(); bool empty(); bool full(); bool getFrontElement(int &x);//只能访问队列头部的元素 bool push(int x);//在队列尾部插入元素 bool pop();//删除队列头部元素 int size();private: int front, rear;//头部尾部索引值 int count;//队列中元素个数 int data[maxlen];};int _tmain(int argc, _TCHAR* argv[]){ //运用队列输出杨辉三角形 int n = 8;//设定杨辉三角形阶数 int s1 = 0, s2 = 0; myQueue que; que.push(1);//第一个元素入栈 cout<<1<<endl; for(int i = 2; i <= n; i++) { s1 = 0;//前一个出栈的元素 for(int j = 0; j < i - 1; j++)//对杨辉三角形中第i层,从左到右的元素依次入队列 { que.getFrontElement(s2);//取队列头元素 que.pop();//列头元素出栈 cout<<s1 + s2<<" "; que.push(s1 + s2); s1 = s2;//前一个出栈的元素更新 } que.push(1);//每行最后一个数值都为1 cout<<1<<endl; } return 0;}myQueue::myQueue()//初始化{ front = rear = 0; count = 0;}bool myQueue::empty(){ if(count == 0) return true; else return false;}//教材中对满队列的一种定义//留出一个元素空间不使用(与栈区分),头,尾索引相差1时,定义为满队列bool myQueue::full(){ if(count == maxlen - 1) return true; else return false;}bool myQueue::getFrontElement(int &x){ if(empty()) return false; else { //队列头索引值所在空间没有存储元素 //访问队列头元素时,front不能变化 //front = (front + 1) % maxlen; //error x = data[(front + 1) % maxlen]; return true; }}bool myQueue::push(int x){ if(full()) return false; else { rear = (rear + 1) % maxlen; data[rear] = x; count++; return true; }}bool myQueue::pop(){ if(empty()) return false; else { front = (front + 1) % maxlen;//取模运算,与循环队列相符合 count--; return true; }}int myQueue::size(){ return count;}
0 0
- 队列的实现:顺序队列
- 队列---顺序队列及其实现
- 数组实现顺序队列、顺序循环队列
- 顺序队列的实现
- 顺序队列的实现
- 顺序队列的实现
- 顺序队列的实现
- C++实现顺序队列
- 实现顺序队列
- 顺序存储队列实现
- 顺序队列的实现
- Java实现顺序队列
- 顺序队列的实现
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- java队列实现(顺序队列、链式队列、循环队列)
- 24.AIDL,在文件夹中重命名java文件为aidl文件后,Eclipse中无显示?
- HDOJ 4648 Magic Pen 6(暴力,DP,哈希表简单)
- XML编程—CRUD
- 【Android】SlidingMenu属性详解
- 数字金字塔
- 实现顺序队列
- hdu 1689 Alien’s Necklace(bfs搜索最小奇数环)
- ios学习流程和见解
- Binary Tree Postorder Traversal
- AIDL:远程调用服务里的方法失败,提示取得的IBinder对象NullPointerException
- 在Xcode中使用Git进行源码版本控制
- Windows下使用VisualSVN Server搭建SVN服务器
- jquery修改a标签的href链接和文字
- 26.Alt+/ 提示不管用的解决办法?