真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++實現(xiàn)循環(huán)隊列和鏈式隊列的示例

循環(huán)隊列:

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比石河子網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式石河子網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋石河子地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

1.循環(huán)隊列中判斷隊空的方法是判斷front==rear,隊滿的方法是判斷front=(rear+1)%maxSize。(我曾經(jīng)想過為什么不用一個length表示隊長,當length==maxSize時隊滿)原因就是,在頻繁的隊列操作中,多出一個變量會大量的增加執(zhí)行時間,所以不如浪費一個數(shù)組空間來得劃算。

2.用單鏈表表示的鏈式隊列特別適合于數(shù)據(jù)元素變動較大的情形,而且不存在溢出的情況。

template
class SeqQueue{
 protected:
  T *element;
  int front,rear;
  int maxSize;
 public:
  SeqQueue(int sz=10){
   front=rear=0;
   maxSize=sz;
   element=new T[maxSize];
  }
  ~SeqQueue(){
   delete[] element;
  }
  bool EnQueue(const T& x){//入隊 
   if(isFull()) return false;
   element[rear]=x;
   rear=(rear+1)%maxSize;
   return true;
  }
  bool DeQueue(T& x){//出隊 
   if(isEmpty()) return false;
   x=element[front];
   front=(front+1)%maxSize;
   return true;
  }
  bool getFront(T& x){//獲取隊首元素 
   if(isEmpty()) return false;
   x=element[front];
   return true;
  }
  void makeEmpty(){//隊列置空 
   front=rear=0;
  }
  bool isEmpty()const{//判斷隊列是否為空 
   return (rear==front)?true:false;
  }
  bool isFull()const{//隊列是否為滿
    return ((rear+1)%maxSize==front)?true:false;
  }
  int getSize()const{
   return (rear-front+maxSize)%maxSize;
  }
};

測試代碼如下:

void menu(){
 cout<<"1.入隊"< *sq){
 switch(num){
  int x;
  case 1:
   cin>>x;
   sq->EnQueue(x);
   break;
  case 2:
   sq->getFront(x);
   cout<DeQueue(x);
   break;
  case 4:
   sq->makeEmpty();
   break;
  case 5:
   x=sq->getSize();
   cout< *sq=new SeqQueue;
 int num;
 while(true){
  menu();
  cin>>num;
  function(num,sq);
 } 
 delete sq;
 return 0; 
}

之后是鏈式隊列,實現(xiàn)類代碼和測試代碼如下:

#include 
using namespace std;
template 
struct LinkNode{
 T data;
 LinkNode *link;
 LinkNode(T& x,LinkNode *l=NULL){
  data=x;
  link=l;
 }
};
template
class LinkedQueue{
 protected:
  LinkNode *front,*rear;
 public:
  LinkedQueue(){
   front=rear=NULL;
  }
  ~LinkedQueue(){
   makeEmpty();
  }
  bool enQueue(T& x){
   if(front==NULL)
    front=rear=new LinkNode(x);
   else{
    rear=rear->link=new LinkNode(x);
   }
   return true;
  }
  bool deQueue(T& x){
   if(isEmpty()) return false;
   LinkNode *p=front;
   x=front->data;
   front=front->link;
   delete p;
   return true;
  }
  bool getFront(T& x)const{
   if(isEmpty()) return false;
   x=front->data;
   return true;
  }
  void makeEmpty(){
   LinkNode *p;
   while(front!=NULL){
    p=front;
    front=front->link;
    delete p;
   }
  }
  bool isEmpty()const{
   return (front==NULL)?true:false;
  }
  int getSize()const{
   LinkNode *p;
   int count=0;
   p=front;
   while(p!=NULL){
    count++;
    p=p->link;
   } 
  return count;
  }
}; 
void menu(){
 cout<<"1.入隊"< *lq){
 switch(num){
  int x;
  case 1:
   cin>>x;
   lq->enQueue(x);
   break;
  case 2:
   lq->getFront(x);
   cout<deQueue(x);
   break;
  case 4:
   lq->makeEmpty();
   break;
  case 5:
   x=lq->getSize();
   cout< *lq=new LinkedQueue;
 int num;
 while(true){
  menu();
  cin>>num;
  function(num,lq);
 } 
 delete lq;
 return 0; 
}

以上這篇C++實現(xiàn)循環(huán)隊列和鏈式隊列的示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)頁名稱:C++實現(xiàn)循環(huán)隊列和鏈式隊列的示例
本文來源:http://weahome.cn/article/gecdgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部