【POJ 1028】模拟浏览器

本题要求模拟浏览器的前进、后退等操作。

用两个栈实现,一个控制前进,一个控制后退。

在前进与后退操作中,从一个栈中弹出栈顶元素,压入另一个栈中。

当打开一个新网页时,将前进栈清空。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <stack>

using namespace std;

int top;

char Cmd[100 + 5], URL[1000 + 5][100 + 5];

stack<char *> backStack, foreStack;

void solveVisit()
{
    scanf("%s", URL[++top]);
    printf("%s\n", URL[top]);
    while (!foreStack.empty()) foreStack.pop();
    backStack.push(URL[top]);
}

void solveBack()
{
    if (backStack.size() == 1)
    {
        printf("Ignored\n");
        return;
    }
    foreStack.push(backStack.top());
    backStack.pop();
    printf("%s\n", backStack.top());
}

void solveForward()
{
    if (foreStack.size() == 0)
    {
        printf("Ignored\n");
        return;
    }
    printf("%s\n", foreStack.top());
    backStack.push(foreStack.top());
    foreStack.pop();
}

int main()
{
//    freopen("1.in", "r", stdin);
    strcpy(URL[++top], "http://www.acm.org/");
    backStack.push(URL[top]);
    while (~scanf("%s", Cmd))
    {
        if (!strcmp(Cmd, "QUIT")) return 0;
        if (!strcmp(Cmd, "VISIT")) solveVisit();
        if (!strcmp(Cmd, "BACK")) solveBack();
        if (!strcmp(Cmd, "FORWARD")) solveForward();
    }
    return 0;
}

【POJ 1028】模拟浏览器

时间: 2024-10-20 12:56:08

【POJ 1028】模拟浏览器的相关文章

poj 1028 Web Navigation(模拟题)

题目链接:http://poj.org/problem?id=1028 Description Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reac

POJ 1028 Web Navigation 题解

考查代码能力的题目.也可以说是算法水题,呵呵. 推荐新手练习代码能力. 要增加难度就使用纯C实现一下stack,那么就有点难度了,可以使用数组模拟环形栈.做多了,我就直接使用STL了. #include <stdio.h> #include <iostream> #include <stack> #include <string> using namespace std; int main() { stack<string> forward; s

PHP curl模拟浏览器抓取网站信息

curl是一个利用URL语法在命令行方式下工作的文件传输工具. 官方解释 curl是一个利用URL语法在命令行方式下工作的文件传输工具.curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP.curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies,

模拟浏览器

模拟浏览器,发送http的消息给tomcat服务器,并获取服务器(Tomcat)反馈的信息 import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class MyBrowser { public static void main(String[]

php -- php模拟浏览器访问网址

目前我所了解到的在php后台中,用php模拟浏览器访问网址的方法有两种: 第一种:file_get_contents($url) 通过php内置的 file_get_contents 函数可以模拟浏览器访问网址的行为,取的结果就是那个网址所返回的所有东西(这种情况一般用于返回的是 xml 格式字符串或者 json 字符串) 第二种:curl curl 是 php 提供的内置函数,其功能非常强大,封装常用的http,soap,ftp等协议 微信主要通过其进行模拟POST请求 1)初始化curl 2

Python模拟浏览器实现用户响应

最近工作中遇到一个问题,在集群上运行的任务有时候无法正常结束,或者无法正常启动.这会造成这批运行的任务无法正常结束运行,处于pending的状态,导致后面的任务无法正常启动. 该问题困扰我们项目已经有半年左右了,一直没有想到很好的解决办法.主要原因就是任务的状态只能在浏览器中看出,无法通过后台的日志或者数据库查询得到.在浏览器中,如果我们看到某个任务长时间没有运行时间和状态的变化,就可以把这个任务当做是“僵尸”任务,从而可以将该任务手动结束掉(kill). 春节之后在网上看到一些有关爬虫的文章,

php中curl模拟浏览器来传输数据

cURL可以使用URL的语法模拟浏览器来传输数据, 因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代

POJ 2420 模拟退火法

A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3272   Accepted: 1664 Description Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10base2 (coaxial) cables that allow you

JavaWeb的学习--XML&amp;反射案例:通过解析xml,模拟浏览器路径访问servlet

1. 案例分析 通过解析xml,模拟浏览器路径访问servlet,我们希望用户访问的路径是/servlet1,将执行com.java.web.servlet01.MyServlet01程序,如果访问      的路径是/servlet2,将执行com.java.web.servlet01.MyServlet02程序. 在执行测试程序前(@before),解析xml文件,将解析的结果存放在Map集合中,map中的数据的格式为 路径=实现类. 解析xml的思路:先解析<servlet>,将结果存放