1028: Web de navegación: Pila de explotación a cielo análisis de puntos +

Sujeto al efecto

Las características estándar incluyen un navegador web puede adelante y hacia atrás entre las páginas visitadas recientemente. Una forma de lograr estas dos funciones se utilizan para realizar un seguimiento de la pila de la página moviendo hacia adelante y hacia atrás se puede llegar. En este tema, se requiere que decide implementar esta acción.

La necesidad de apoyar el siguiente comando:

VOLVER: La página actual empujando hacia delante la parte superior de la pila. Pop-up páginas desde la parte superior de la parte posterior de la pila, por lo que es la nueva página actual. Si la pila está de nuevo vacía, ignorar el comando.

Adelante: Empuje la parte superior trasera de página actual de la pila. Pop-up páginas desde la parte superior de la pila hacia adelante, por lo que es la nueva página actual. Si la pila está vacía antes, ignora el comando.

Acceso: La página actual empujando hacia atrás la parte superior de la pila, y la URL designada como la nueva página actual. pila hacia adelante está vacía.

Salir: Salir explorador.

Suponiendo que el navegador carga inicialmente la página web por URL http://www.acm.org/.

análisis de las ideas

Hay varios pozos punto

  • Atrás, adelante estas dos operaciones, si la pila está vacía, todo el comando no se ejecuta! La url actual no cambiará.
  • Tenga en cuenta que la URL actual es el valor inicial.
#include<iostream>
#include<stack>
#include<string>
using namespace std;

stack<string> forward1, backward;

int main() {
	char s[10]; string str, curUrl("http://www.acm.org/");
	while (cin >> s) {
		int ignored = 0;
		if (s[0] == 'Q')break;
		if (s[0] == 'V') {
			backward.push(curUrl);
			cin >> str;
			curUrl = str;
			while (!forward1.empty()) forward1.pop();
		}
		else if (s[0] == 'B') {
			if (backward.empty()) ignored = 1;
			else {
				forward1.push(curUrl);
				curUrl = backward.top(); backward.pop();
			}
		}
		else if (s[0] == 'F') {
			if (forward1.empty()) ignored = 1;
			else {
				backward.push(curUrl); curUrl = forward1.top(); forward1.pop();
			}
		}

		if (!ignored)cout << curUrl << endl;
		else cout << "Ignored" << endl;
	}
}
Publicados 186 artículos originales · alabanza ganado 13 · vistas 9313

Supongo que te gusta

Origin blog.csdn.net/csyifanZhang/article/details/105185387
Recomendado
Clasificación