当前位置: 首页 > news >正文

深圳网站建设新闻在线html5制作网站

深圳网站建设新闻,在线html5制作网站,装饰设计收费标准2020,威海建设网站http://blog.csdn.net/hanjing_1995/article/details/51539578 使用两个栈实现一个队列 思路一#xff1a; 我们设定s1是入栈的#xff0c;s2是出栈的。 入队列#xff0c;直接压到s1即可 出队列#xff0c;先把s1中的元素倒入到s2中#xff0c;弹出s2中的栈顶元素#x…http://blog.csdn.net/hanjing_1995/article/details/51539578 使用两个栈实现一个队列 思路一 我们设定s1是入栈的s2是出栈的。 入队列直接压到s1即可 出队列先把s1中的元素倒入到s2中弹出s2中的栈顶元素再把s2的剩余元素全部倒回s1中。 缺点 每次只要出栈一个元素就要将元素倒来倒去麻烦 思路2 入队列时 如果s1为空把s2中所有的元素倒出压到s1中。否则直接压入s1    出队列时 如果s2不为空把s2中的栈顶元素直接弹出。否则把s1的所有元素全部弹出压入s2中再弹出s2的栈顶元素 思路1无条件地每次都要将元素倒来倒去思路2出队时较思路1简单 思路3 我们设定s1是入栈的s2是出栈的 入队列直接压入元素至s1即可 出队列如果s2不为空把s2中的栈顶元素直接弹出。否则把s1的所有元素全部弹出压入s2中再弹出s2的栈顶元素 相比于方法2入队直接压入即可~ 那么我们可以看出思路三最简单我们下面看下代码。 代码实现 1我们直接调用库里的stack来实现。一般调用库里的就行了 [cpp] view plain copy #define _CRT_SECURE_NO_WARNINGS 1   #includeiostream   using namespace std;   //两个栈实现一个队列   #includestack      templateclass T   class Queue   {   public:       void appendTail(const T x)       {           s1.push(x);       }          void deleteHead()       {             if (s2.empty())             {                 while (!s1.empty())                 {                     s2.push(s1.top());                     s1.pop();                 }                 cout  s2.top()    ;                 s2.pop();             }             else             {                  cout  s2.top()    ;                  s2.pop();                       }        }   private:       stackT s1;       stackT s2;          };         void Test()   {       Queueint q;       q.appendTail(1);       q.appendTail(2);       q.appendTail(3);       q.appendTail(4);       q.deleteHead();       q.deleteHead();       q.deleteHead();       q.deleteHead();   }      int main()   {       Test();       system(pause);       return 0;   }   2自己实现栈实现。 [cpp] view plain copy #define _CRT_SECURE_NO_WARNINGS 1   #includeiostream   using namespace std;      #includeassert.h      //直接实现Stack也可以用适配器实现栈或者用库。   //将Stack基本功能实现如下   templateclass T      class Stack   {   public:       Stack()           :_array(NULL)           , _size(0)           , _capacity(0)       {}          StackT(const StackT s)           : _array(new T[s._capacity])       {           swap(_array, s._array);           swap(_size, s._size);           swap(_capacity, s._capacity);       }          StackT operator(const StackT s)       {           if (s ! this)           {               swap(_array, s._array);               swap(_size, s._size);               swap(_capacity, s._capacity);           }           return *this;       }          ~Stack()       {           if (_array)           {               delete[] _array;               _array  NULL;           }       }          void _CheckCapacity()       {           if (_size  0)           {               _capacity  3;               _array  new T[_capacity];           }           if (_size  _capacity)           {               _capacity * 2;               T* tmp  new T[_capacity];               for (int index  0; index  _size; index)               {                   tmp[index]  _array[index];               }               delete[] _array;               _array  tmp;           }       }          void Push(const T x)       {           _CheckCapacity();           _array[_size]  x;       }          void Pop()       {           if (_size  0)           {               return;           }           --_size;       }          size_t Size()       {           return _size;       }          bool Empty()       {           return Size()  0;       }          T Top()       {           assert(_size  0);           return _array[_size - 1];       }      private:       T* _array;       size_t _size;       size_t _capacity;   };         templateclass T   class Queue   {   public:       void InQueue(const T x)       {           s1.Push(x);       }          void OutQueue()       {           //栈s2为空则将栈s1的元素全部倒入s2中再弹出最上面的那个元素           if (s2.Empty())           {               while (!s1.Empty())               {                   s2.Push(s1.Top());                   s1.Pop();               }               s2.Pop();           }              //栈s2不为空直接弹出元素           else           {               s2.Pop();           }       }                 void Print()    //打印队列元素分四种情况。       {           if (s1.Empty()  s2.Empty())           {               cout  The Queue is Empty!;           }              else if (!s1.Empty()  s2.Empty())           {               while (!s1.Empty())               {                   s2.Push(s1.Top());                   s1.Pop();               }                  while (!s2.Empty())               {                   cout  s2.Top()    ;                   s2.Pop();               }           }              else if (s1.Empty()  !s2.Empty())           {               while (!s2.Empty())               {                   cout  s2.Top()    ;                   s2.Pop();               }           }              else           {               while (!s2.Empty())               {                   cout  s2.Top()    ;                   s2.Pop();               }                  while (!s1.Empty())               {                   s2.Push(s1.Top());                   s1.Pop();               }                  while (!s2.Empty())               {                   cout  s2.Top()    ;                   s2.Pop();               }           }           cout  endl;       }      private:       StackT s1;    //入队       StackT s2;    //出队   };            //测试两个栈实现一个队列   void Test1()   {       Queueint q1;       q1.InQueue(1);       q1.InQueue(2);       q1.InQueue(3);       q1.InQueue(4);       /*q1.Print();*/          q1.OutQueue();       /*q1.Print();*/       q1.InQueue(5);       q1.InQueue(6);       q1.InQueue(7);          q1.Print();   }            int main()   {       Test1();       system(pause);       return 0;   }   (1个细节) 注意再将元素倒入另一个栈时代码并不是先pop,再push。因为这样push后元素就找不到了。因此要先访问到栈顶元素top,再push,而后pop。 本文出自 “Han Jings Blog” 博客请务必保留此出处http://10740184.blog.51cto.com/10730184/1763006
http://www.huolong8.cn/news/37267/

相关文章:

  • 西安小公司网站建设网站开发智能化方向
  • 做app网站公司wordpress静态化占内存么
  • 邢台网站建设邢台阿里万网域名注册官网
  • 做网站 搞流量 赚广告费公司自己做网站推广
  • 昆明seo公司网站网络营销产品策略案例
  • 网站做行业认证好处建设网络道德教育网站的有效措施有
  • vs做网站视频教程网站建设费钱吗
  • wordpress整站生成html桂林注册公司
  • WordPress电影公司网站主题如何做网站链接分享朋友圈
  • 建设一中校园网站马鞍山网站建设咨
  • 银川网站开发培训阿里云域名注册优惠口令
  • 仿网站源码北京网站建设策划建设公司
  • 百度网站推广怎么做网站程序开发外包
  • 电子商务网站建设技术基础--asp.net程序设计教学大纲wordpress主题中文
  • ps可以在哪个网站上做兼职制作图片的软件哪个好用
  • 电子科技企业网站建设购物网站开发含代码
  • 福建省建设厅网站余腾龙官方网站做号软件
  • 网站解析 cname抖音小程序源码
  • 做餐饮企业网站的费用代运营的工作内容
  • 网站建设教程试题网站建设项目国内外分析报告
  • 网站制作收费明细表潍坊快速建站模板
  • 长春企业网站模板建站为企网站
  • ssh小型购物网站开发网络平台营销
  • 建设银行网站网址是什么手机网站首页布局设计
  • 做家庭影院的有哪些网站广州网络运营课程培训班
  • 做产品网站建设网站建设需要了解哪些方面
  • 那些网站h5做的不错国内网页设计师个人网站
  • 岳池网站建设互联网运营公司排行榜
  • 自助业务网站系统湖南营销型网站建设 要上磐石网络
  • 定制开发网站 推广兰州网站建设推荐q479185700上快