题目是让模拟实现一下浏览器的后退和前进功能,题目中也有提示,用两个栈就可以了,比较简单。

[cpp] view plaincopy
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. typedef struct {
  5. int top;//栈顶
  6. char* s[100];
  7. } Stack;
  8. /**
  9. *初始化
  10. */
  11. Stack* create_stack(){
  12. Stack* stack=(Stack*)(malloc(sizeof(Stack)));
  13. stack->top=-1;
  14. memset(stack->s,0,sizeof(stack->s));
  15. return stack;
  16. }
  17. void push(Stack* stack,char* str){
  18. stack->s[++stack->top]=str;
  19. }
  20. char* pop(Stack* stack){
  21. int top=stack->top;
  22. if(top==-1){
  23. return NULL;
  24. }
  25. stack->top--;
  26. return stack->s[top];
  27. }
  28. int isEmpty(Stack* stack){
  29. return stack->top==-1;
  30. }
  31. int main(void){
  32. Stack* forward=create_stack();
  33. Stack* backward=create_stack();
  34. char* home_page="http://www.acm.org/";
  35. char* current_page=home_page;
  36. char command[8];
  37. while(1){
  38. scanf("%s",command);
  39. if(command[0]=='Q'){//QUIT
  40. break;
  41. }else if(command[0]=='V'){//VISIT
  42. push(backward,current_page);
  43. char *str=(char*)malloc(sizeof(char)*71);
  44. scanf("%s",str);
  45. current_page=str;
  46. forward->top=-1;
  47. printf("%s\n",str);
  48. }else if(command[0]=='B'){//BACK
  49. if(isEmpty(backward)){
  50. printf("Ignored\n");
  51. }else{
  52. push(forward,current_page);
  53. current_page=pop(backward);
  54. printf("%s\n",current_page);
  55. }
  56. }else{//FORWARD
  57. if(isEmpty(forward)){
  58. printf("Ignored\n");
  59. }else{
  60. push(backward,current_page);
  61. current_page=pop(forward);
  62. printf("%s\n",current_page);
  63. }
  64. }
  65. }
  66. int i;
  67. for(i=0;i<100;i++){//释放下堆内存.....
  68. char* tmp=backward->s[i];
  69. if(tmp&&tmp!=home_page){
  70. free(backward->s[i]);
  71. }
  72. }
  73. free(forward);
  74. free(backward);
  75. return 0;
  76. }

poj1028 模拟浏览器后退和前进(栈)相关推荐

  1. java使用selenium实现模拟浏览器操作API大全 模拟登录

    java selenium 模拟登录 模拟浏览器 API大全 (一)环境安装之Java (二)环境安装之IntelliJ IDEA (三)环境安装之Selenium 1.通过jar包安装 2.通过Ma ...

  2. POJ 1028 浏览器前进后退(双栈)

    题目链接:http://poj.org/problem?id=1028 我的相同博文参考:https://blog.csdn.net/qq_21201267/article/details/88938 ...

  3. LeetCode 1472. 设计浏览器历史记录(双栈)

    1. 题目 你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,你可以访问其他的网站 url ,也可以在浏览历史中后退 steps 步或前进 steps 步. 请你实现 B ...

  4. 模拟浏览器操作程序(数据结构课设)

    文章目录 前言 一.题目 二.系统设计 2.1 功能模块图 2.2 主要功能函数 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目  模拟浏览器操作程序:标准的 ...

  5. python 模拟浏览器selenium_使用Selenium模拟浏览器,实现自动爬取数据

    最近需要在一个网站下载一批数据.但是输入一个查询,返回三四万条结果,每次只能导出500条,而且每次还得输入下载条目的范围!这样点击下载,还不要了我的老命.于是乎想自动化这个过程. 我的需求主要是两点: ...

  6. 爬虫selenium + chrome (PhantomJS)模拟浏览器 抓取京东商城为例

    # /usr/bin/env python # -*- coding: utf-8 -*- # @Time : 18-4-27 下午8:21 # @Author : 杨星星 # @Email : ya ...

  7. Python利用Selenium模拟浏览器自动操作

    概述 在进行网站爬取数据的时候,会发现很多网站都进行了反爬虫的处理,如JS加密,Ajax加密,反Debug等方法,通过请求获取数据和页面展示的内容完全不同,这时候就用到Selenium技术,来模拟浏览 ...

  8. ajax浏览器后退 iframe,ajax后退解决方案

    一.使用iframe,通过document.write产生历史 0 0 var info = document.getElementById('info'); var i = 1; function ...

  9. Python 模拟浏览器访问网页,Selenium库的详细使用

    (一)Selenium基础 入门教程:Selenium官网教程 1.Selenium简介 Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome.Firefox.Safar ...

最新文章

  1. html文件如何放到服务器上_对网盘泄露说不,自己数据放到自己服务器上,用群辉搭建个人网盘...
  2. highcharts 显示网格
  3. MSSQL数据库设计心得
  4. 灵活正确的实现.NET插件机制
  5. python 获取窗口句柄_Python如何自动化哄女朋友
  6. #425[div2]
  7. 微信代金券--免充值代金券创建、激活、发放,查看详情
  8. Scala实现Kafka生产者与消费者实例
  9. 小程序服务器获取appid,微信小程序小程序appid如何获取
  10. 压缩包加密后门_加密后门的问题
  11. 第4章 数据库应用系统功能设计与实施
  12. opencv教程(基于python)----关于滑条
  13. python mkl 锐龙 cpu_Matlab 升级适配 AMD 锐龙,满血性能轻松提升 60%
  14. Python模拟键盘输入(附Python 键位码表)
  15. 穿山甲插屏广告居中_自渲染插屏
  16. OA系统实现(请假审批,mybatis)-1
  17. oracle数据库怎么ping,Oracle中tnsping命令解析
  18. Matlab做一个刚体运动仿真,模拟小车避障
  19. javaweb复习笔记总结
  20. leafler如何清除地图上的图标点

热门文章

  1. 【Android 逆向】Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )
  2. 【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )
  3. 【Java 网络编程】UDP 服务器 与 客户端持续交互 案例
  4. chrome手机模拟器显示尺寸不正确
  5. java Socket Tcp 浏览器和服务器(一)
  6. 友元实例:友元类及友元函数
  7. linux(4)-Ptrace 系统调用的使用
  8. Ubuntu虚拟机JeOS安装-2016.08.28
  9. openStack 租户控制台修改虚拟机账户密码
  10. C语言OJ项目参考(2399)求倒数和