您的位置:首页 > 其它

POJ 1028 Web Navigation

2014-02-24 00:16 387 查看
题目大意:

标准网页浏览器支持在最近浏览过的网页中前进和后退,实现该特征的一种方法就是用两个栈来记录前面和后面的浏览过的网页。

现需要编程实现该功能,并且能支持以下四种命令:

BACK:将当前网页压入“前栈”,并从“后栈”栈顶弹出一个网页作为当前网页,如果在弹之前“后栈”是空的,则该命令将被忽视;

FORWARD:将当前网页压入“后栈”,并从“前栈”栈顶弹出一个网页作为当前网页,如果在弹之前“后栈”是空的,则该命令将被忽视;

VISIT:将当前网页压入“后栈”,将命令中要访问的网页作为当前网页并将“前栈”清空;

QUIT:退出浏览器

其中,网页数最多为100个(不包括默认的首页),网址所包含的字符最多为70个。

题目链接

注释代码:

/*
* Problem ID : POJ 1028 Web Navigation
* Author     : Lirx.t.Una
* Language   : C
* Run Time   : 0 ms
* Run Memory : 176 KB
*/

#include <stdio.h>

//maximum size of stack,存放URL栈的最大容量
//其中第一个(下标为0的)存放题中默认的acm.org
//除此之外最多还有100个,因此为100 + 1个
#define	MAXSTACKSIZE		101
//maximum length of URL,URL的最大长度(70 + 1),最后一位放'\0'
#define	MAXURLLEN			71
//maximum length of command,向服务器请求的命令的最大长度
//最长的是FORWARD,7位,再加一位'\0',总共为8位
#define	MAXCMDLEN			8

char	stk[MAXSTACKSIZE][MAXURLLEN] = { "http://www.acm.org/" };//stack,URL栈,头个存放默认的acm.org
char	cmd[MAXCMDLEN];//command,服务器请求命令

int
main() {

int		cur;//栈的当前位置指针
int		top;//栈的栈顶位置指针

//初始化
top = 0;
cur	= 0;

while ( scanf("%s", cmd), *cmd != 'Q' )//若为QUIT,则退出测例结束程序
switch ( *cmd )	{

case 'V' ://若为VISIT

//将当前位置之后的URL删去后加visit的URL压栈
scanf("%s", stk[++cur]);//先将visit的URL压栈
top = cur;//更新栈顶指针将后面的URL删除
puts(stk[cur]);
break;

case 'B' ://若为BACK

if ( !cur ) {//若当前页为首页则访问失败

puts("Ignored");
break;
}

puts(stk[--cur]);
break;

default ://若为FORWARD

if ( cur == top ) {//若当前页为末页页访问失败

puts("Ignored");
break;
}

puts(stk[++cur]);
break;
}

return 0;
}
无注释代码:

#include <stdio.h>

#define	MAXSTACKSIZE		101
#define	MAXURLLEN			71
#define	MAXCMDLEN			8

char	stk[MAXSTACKSIZE][MAXURLLEN] = { "http://www.acm.org/" };
char	cmd[MAXCMDLEN];

int
main() {

int		cur;
int		top;

top = 0;
cur	= 0;

while ( scanf("%s", cmd), *cmd != 'Q' )
switch ( *cmd )	{

case 'V' :

scanf("%s", stk[++cur]);
top = cur;
puts(stk[cur]);
break;

case 'B' :

if ( !cur ) {

puts("Ignored");
break;
}

puts(stk[--cur]);
break;

default :

if ( cur == top ) {

puts("Ignored");
break;
}

puts(stk[++cur]);
break;
}

return 0;
}

单词解释:

navigation:n, 导航,航行

browswer:n, 浏览器

feature:n, 特征

backward/forward:adv/adj, 向后/向前

implement:vt, 实施,执行

keep track of:vt, 记录,与...保持联系

specify:vt, 指定,详细说明

empty:vt, 清空

assume that:假设....

initial:adj, 初始的

load the web page at 网址:加载网页在...(网址)

sequence:n, 序列

keyword:n, 关键字

whitespace:n, 空白,空格

instance:n, 实例,例子

execute:vt, 执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: