<海岛blog>
- /* POJ1028 Web Navigation */
- #include <iostream>
- #include <string>
- #include <stack>
- using namespace std;
- int main()
- {
- stack<string> ss, st;
- string cmd, url;
- ss.push("http://www.acm.org/");
- while(cin >> cmd) {
- if(cmd[0] == 'Q') // QUIT
- break;
- else if(cmd[0] == 'V') { // VISIT
- cin >> url;
- ss.push(url); //push() 在栈顶增加元素
- cout << url << endl;
- // 清空:一旦输入一个新的URL,就不能再做FORWARD了
- while(!st.empty()) //empty() 堆栈为空则返回真
- st.pop(); //pop() 移除栈顶元素(不会返回栈顶元素的值)
- } else if(cmd[0] == 'B') { // BACK
- if(ss.size() > 1) { //size() 返回栈中元素数目
- st.push(ss.top()); //top() 返回栈顶元素
- ss.pop();
- cout << ss.top() << endl;
- } else
- cout << "Ignored" << endl;
- } else if(cmd[0] == 'F') { // FORWARD
- if(!st.empty()) {
- ss.push(st.top());
- cout << st.top() << endl;
- st.pop();
- } else
- cout << "Ignored" << endl;
- }
- }
- return 0;
- }
包含以下几个成员函数:
empty() 堆栈为空则返回真
pop() 移除栈顶元素(不会返回栈顶元素的值)
push() 在栈顶增加元素
size() 返回栈中元素数目