<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C++用數組和鏈表分別實現Queue

      C++用數組和鏈表分別實現Queue

      昨天寫了《C++用數組和鏈表分別實現Stack》,今天就是《C++用數組和鏈表分別實現Queue》,

      隊列就是先來的先被處理掉,后來的就等,直到成為先來的,實現起來感覺和棧差不多。

      模板好用的,功能強大,有些東東還是寫成模板的好,廢話昨天都說了,今天是不想說的,

      博客園的哥們說我的博客不符合推薦到首頁的要求,只好加幾句廢話。

      鏈表版
      template<typename T,typename container>
      class queue
      {
      public:
      bool empty() const
      {
      return len==0;
      }

      void checkEmpty()
      {
      if(empty())
      {
      throw new exception("隊列中沒有數據");
      }
      }

      T
      & back()
      {
      checkEmpty();
      return cur->val;
      }

      const T& back() const
      {
      return back();
      }

      void pop()
      {
      checkEmpty();
      if(head->next==cur)
      {
      delete head
      ->next;
      head
      ->next=NULL;
      }
      else
      {
      node
      * tmp=head->next;
      head
      ->next=tmp->next;
      delete tmp;
      }
      --len;
      }

      T
      & front()
      {
      checkEmpty();
      return head->next->val;
      }

      const T& front() const
      {
      return front();
      }

      void push(const T& val)
      {
      node
      *tmp=new node(val);
      cur
      ->next=tmp;
      cur
      =tmp;
      ++len;
      }

      queue()
      {
      initialize();
      }

      explicit queue(const container& cont)
      {
      initialize();
      vector
      <int>::const_iterator iter=cont.begin();
      while(iter!=cont.end())
      {
      push(
      *iter++);
      }
      }

      ~queue()
      {
      node
      *tmp;
      while(tmp!=NULL)
      {
      tmp
      =head;
      head
      =head->next;
      delete tmp;
      tmp
      =NULL;
      }
      delete cur;
      }


      int size()
      {
      return len;
      }

      protected:
      typedef
      struct node1
      {
      node1
      *next;
      T val;
      node1(T v):val(v),next(NULL){}
      }node;

      private :
      int len;
      node
      *head;
      node
      *cur;
      void initialize()
      {
      head
      =new node(-1);
      cur
      =head;
      len
      =0;
      }
      };
      數組版

      template
      <typename T,typename container>
      class queue
      {
      public:
      bool empty() const
      {
      return head==rail;
      }

      void checkEmpty()
      {
      if(empty())
      {
      throw new exception("隊列中沒有數據");
      }
      }

      //隊尾元素
      T& back()
      {
      checkEmpty();
      return arr[rail-1];
      }

      const T& back() const
      {
      return back();
      }

      //出隊
      void pop()
      {
      checkEmpty();
      arr[head
      ++]=0;
      }

      //隊頭元素
      T& front()
      {
      checkEmpty();
      return arr[head];
      }

      const T& front() const
      {
      return front();
      }

      //入隊
      void push(const T& val)
      {
      if(rail>=capacity){
      capacity
      =(rail-head)*2;
      T
      *tmp=new T[capacity];
      int j=0;
      for(int i=head;i<rail;i++)
      {
      tmp[j
      ++]=arr[i];
      }
      delete arr;
      arr
      =tmp;
      rail
      =rail-head;
      head
      =0;
      }
      arr[rail
      ++]=val;
      }

      queue()
      {
      initialize(
      4);
      }

      queue(
      int capacity)
      {
      initialize(capacity);
      }

      explicit queue(const container& cont)
      {
      initialize(cont.size());
      vector
      <int>::const_iterator iter=cont.begin();
      while(iter!=cont.end())
      {
      push(
      *iter++);
      }
      }

      ~queue()
      {
      delete arr;
      }

      //隊列中元素個數
      int size()
      {
      return rail-head;
      }

      protected:
      typedef
      struct node1
      {
      node1
      *next;
      T val;
      node1(T v):val(v),next(NULL){}
      }node;

      private :
      int capacity;
      int head;//對頭元素的位置
      int rail;//對尾元素的位置
      int *arr;

      void initialize(int cap)
      {
      capacity
      =cap;
      arr
      =new int[capacity];
      head
      =rail=0;
      }
      };



      作者:陳太漢

      posted @ 2011-07-12 16:21  古文觀芷  閱讀(4964)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 九台市| 晴隆县| 九九热免费公开视频在线| 大地资源免费视频观看| 亚洲人成网线在线播放VA| 亚洲av无码片在线播放| 国产成人MV视频在线观看| 亚洲国产精品综合久久20| 精品人妻午夜福利一区二区| 国产成人精品亚洲午夜麻豆| 另类 专区 欧美 制服| 精品国产免费一区二区三区香蕉| 国产精品99久久不卡| 日本一区不卡高清更新二区| 丁香婷婷色综合激情五月| 中文字幕人成无码免费视频| 成人啪精品视频网站午夜| 国产精品亚洲二区亚瑟| 久久人人爽人人爽人人av| 北岛玲中文字幕人妻系列| 国产高清自产拍AV在线| 日韩熟女乱综合一区二区| 日韩av在线不卡一区二区三区| 波多野结衣久久一区二区| 性色av免费观看| 99久久亚洲综合精品成人网| 亚洲国产午夜精品理论片| 色婷婷久久综合中文久久一本| 99精品久久免费精品久久| 深夜福利啪啪片| 人妻少妇精品系列| 国产真实乱对白精彩久久| 性男女做视频观看网站| 久久久久香蕉国产线看观看伊| 精品精品国产自在97香蕉| 亚洲中文字幕无码爆乳APP| 国产成人亚洲日韩欧美| av色蜜桃一区二区三区| 九九热在线免费精品视频| 动漫精品专区一区二区三区| 国产色悠悠在线免费观看|