Page 83 - 高中 信息技术 选择性必修1 数据与数据结构
P. 83

 3.3 用队列组织先进先出数据







                         顺序队列的操作可用如表3-5所示的程序代码实现。

                                                      表3-5 顺序队列的操作代码


                                      功能                                            程序段
                                                            void Init_Queue(Queue &q)
                       初始化队列:
                                                            {
                       队头标志和队尾标志均为0,这时队列为
                                                                q.front=q.rear=0;
                     空,没有元素。
                                                            }
                                                            bool IsEmpty_Queue(Queue &q)
                       判断队列是否为空:                            {
                       当front=rear时,队列为空,返回true,否     if(q.front==q.rear) return true;
                     则返回false。                                  else return false;
                                                            }

                                                            bool IsFull_Queue(Queue &q)
                       判断队列是否为满:                            {
                       当rear=maxsize时,队列为满,返回true,     if(q.rear==maxsize) return true;
                     否则返回false。                                 else return false;
                                                            }
                                                            void In_Queue(Queue &q,string x)
                                                            {
                                                                if(!IsFull_Queue(q))
                       入队操作:                 广东教育出版社
                                                              {
                       如果队列非满,则将元素x放入队尾标志
                                                                    q.items[q.rear]=x;
                     rear所指位置,然后rear指向下一个位置。                        q.rear=q.rear+1;
                                                              }
                                                            }

                                                            string Out_Queue(Queue &q)
                                                            {
                                                                if(IsEmpty_Queue(q))
                                                              {
                                                                    return NULL;
                       出队操作:                                  }
                       如果队列为空,返回空元素(NULL),     else
                     否则返回队头标志front所指的元素,然后   {
                     front指向下一个位置。                                  string retvalue;
                                                                    retvalue=q.items[q.front];
                                                                    q.front=q.front+1;
                                                                    return retvalue;
                                                              }
                                                            }

                                                            int Size_Queue(Queue &q)
                                                            {
                       取当前队列长度。
                                                                return q.rear-q.front;
                                                            }





                                                                                                                    75 75







          21X2204.indd   75                                                                                        2019/9/26   13:53:17
   78   79   80   81   82   83   84   85   86   87   88