數據結構-12 網頁跳轉

蒜頭君每天都在用一款名爲“蒜廠瀏覽器”的軟件。在這個瀏覽器中,一共三種操作:打開頁面、回退和前進。它們的功能如下:

  • 打開頁面:在地址欄中輸入網址,並跳轉到網址對應的頁面;
  • 回退:返回到上一次訪問的頁面;
  • 前進:返回到上次回退前的頁面,如果上一次操作是打開頁面,那麼將無法前進。

現在,蒜頭君打開瀏覽器,進行了一系列操作,你需要輸出他每次操作後所在頁面的網址。

輸入格式

第一行輸入一個整數 n(0<n100000)n(0 < n \le 100000),表示蒜頭君的操作次數。

接下來一共 nn 行,每行首先輸入一個字符串,如果是 VISIT,後面接着輸入一個不含有空格和換行的網址(網址長度小於 100100),表示蒜頭君在瀏覽器地址欄中輸入的網址;如果是 BACK,表示蒜頭君點擊了回退按鈕;如果是 FORWARD,表示蒜頭君點擊了前進按鈕。

輸出格式

對於每次操作,如果蒜頭君能操作成功,輸出蒜頭君操作之後的網址,否則輸出 Ignore。

假設蒜頭君輸入的所有網址都是合法的。

樣例輸入

10
VISIT https://www.jisuanke.com/course/476
VISIT https://www.taobao.com/
BACK
BACK
FORWARD
FORWARD
BACK
VISIT https://www.jisuanke.com/course/429
FORWARD
BACK

樣例輸出

https://www.jisuanke.com/course/476
https://www.taobao.com/
https://www.jisuanke.com/course/476
Ignore
https://www.taobao.com/
Ignore
https://www.jisuanke.com/course/476
https://www.jisuanke.com/course/429
Ignore
https://www.jisuanke.com/course/476

代碼

#include <iostream> 
#include <cstdio> 
#include <stack> 
#include <algorithm> 
using namespace std; 
stack<string>a; 
stack<string>b; 
int main() 
{ 
	int n; 
	cin>>n; 
	while(n--) 
	{ 
		string op,ws; 
		cin>>op; 
		if(op=="VISIT" ) 
		{ 
			cin>>ws; 
			a.push(ws); 
			stack<string>x; 
			{ 
			    swap(x,b); 
			} 
			    cout<<a.top(); 
		} 
		if(op=="BACK") 
		{ 
			if(a.empty() )
			{
			   cout<<"Ignore";
			} 
			else
			{ 
				b.push(a.top() ); 
				a.pop() ; 
				if(a.empty() )
				{
					cout<<"Ignore";
					a.push(b.top());
					b.pop() ;
					goto aaa;
			    } 
		        cout<<a.top() ; 
	        } 
	    } 
	if(op=="FORWARD") 
	{ 
		if(b.empty() )
		{
		   cout<<"Ignore";
		} 
		else
		{ 
			a.push(b.top() ); 
			b.pop() ; 
			cout<<a.top() ; 
		} 
	} 
		aaa: if(n!=0)
		cout<<endl; 
	} 
	return 0; 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章