队列(Queue)new.ppt
文本预览下载声明
3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 3.4 队列(Queue) 队列是一种先进先出(First In First Out--FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素. 队列的抽象数据类型 (1) InitQueue (Q) //构造空队列 (2) DestroyQueue (Q) //销毁队列 (3) ClearQueue (Q) //清空队列 (4) QueueEmpty(Q) //判空. 空--TRUE (5) QueueLength(Q) //求队列长度 (6) GetHead (Q,e) //取队头元素, (7) EnQueue (Q,e) //入队列 (8) DeQueue (Q,e) //出队列 (9) QueueTraverse(Q,visit()) //遍历 }ADT Queue 3.4.2 队列的顺序存储 —循环队列 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 队列的顺序存储 如何解决判断队列“空”还是“满”? 循环队列的存储结构 #define MAXQSIZE 100 //最大队列长度 typedef struct { QDataType queue[MAXQSIZE]; //初始化的动态分配存储空间 int front; //头指针,若队列不空,指向队列头元素. int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置. int count; //计数器 }SqQueue; (1)循环队列初始化 int InitQueue (SqQueue *pQ){ //构造一个空队列Q pQ-front=pQ-rear=pQ-count=0; return 1; }//InitQueue (4)队列是否为空 int QueueEmpty (SqQueue Q){ if (Q.count!=0) return 1; else return 0; }// QueueEmpty (5)求队列长度 int QueueLength (SqQueue Q){ return Q.count; }// QueueLength (6)取队头元素 int GetHead (SqQueue Q, DataType *e){ if(Q.count==0) return 0; *e=Q.queue[Q.front]; return 1; }// GetHead (7)入队列 int EnQueue(SqQueue *pQ,DataType e){ if(pQ-count0 pQ-rear==pQ-front) return 0;//队列满 pQ-queue[pQ-rear]=e; pQ-rear=(pQ-rear+1)%MAXQSIZE;
显示全部