首页新闻找找看学习计划

queue队列

0
悬赏园豆:5 [已解决问题] 解决于 2018-03-22 17:26
 1 #include<iostream>
 2 #include<string.h>
 3 #include<queue>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     string s, ssr = "";
 9     string ss = "";
10     queue<char> q;
11 
12     getline(cin, s);
13     int len = s.length();
14     for(int i = 0; i < len; i++)
15         q.push(s[i]);
16 
17     cout << q.size() << endl;
18 
19     for(int i = 0; i < q.size(); i++)
20     {
21         cout << q.front();
22         q.pop();
23     }
24     cout << endl;
25     return 0;
26 }

 

按照上面的代码如果我输入:

Hello World   Here I Come

我理解的是输出:

Hello World   Here I Come

 

为什么运行的时候输出的是

Hello World




learncat的主页 learncat | 初学一级 | 园豆:194
提问于:2018-03-22 09:20
< >
分享
最佳答案
0

你好,关键的地方在于:

    for(int i = 0; i < q.size(); i++)
20     {
21         cout << q.front();
22         q.pop();
23     }

你使用了for循环进行输出,但是要知道,你在for循环里q.pop() 之后q.size()就少一位了呀,所以for循环执行的次数根本没有25次,当执行到World的最后一个单词d的时候,i已经和q.size()一样大了。

输出队列的方法应该是while循环:

while(q.size()>0)
{
   cout<<q.front();
   q.pop();
}
收获园豆:5
Shendu.CC | 小虾三级 |园豆:1806 | 2018-03-22 09:46

谢谢你的回答。

learncat | 园豆:194 (初学一级) | 2018-03-22 17:26

@如若: 你好我曾经也是一个Acmer,我们互加一波好友吧

Shendu.CC | 园豆:1806 (小虾三级) | 2018-03-22 20:30

@Shendu.cc: 行,我已經加過了,剛纔看了下你的blog發現你刷了那麼多題肯定很厲害,以後有什麼不懂的地方,還希望向你請教。自己是一個二本院校非計算機專業的菜鳥,大一下接觸到acm然後就喜歡上了敲代碼,自己一個人學習的過程中也遇到了很多困難,還希望以後能夠向學長請教。

learncat | 园豆:194 (初学一级) | 2018-03-22 21:08

@如若: 你是男生还是女生

Shendu.CC | 园豆:1806 (小虾三级) | 2018-03-22 21:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册