模拟浏览器操作程序(数据结构课设)
文章目录
- 前言
- 一、题目
- 二、系统设计
- 2.1 功能模块图
- 2.2 主要功能函数
- 三、问题分析
- 四、实验结果及分析
- 五、源码
- 总结
前言
20级cqut的别抄!
一、题目
模拟浏览器操作程序:标准的Web浏览器具有在最近访问的页面中前后移动的特性。实现这些特性的一种方法是使用两个堆栈来跟踪可以通过前后移动到达的页面。在这个问题中,我们要求实现这一点。
需要支持以下命令:
- BACK:将当前页面压入前向堆栈的顶部;从后向堆栈的顶部弹出该页,使其成为新的当前页。如果后向堆栈为空,则该指令忽略。
- FORWARD:将当前页面压入后向堆栈的顶部;从前向堆栈的顶部弹出该页,使其成为新的当前页。如果前向堆栈为空,则该指令忽略。
- VISIT:将当前页面压入后向堆栈的顶部,将URL指定为新的当前页。前向堆栈被清空。
- QUIT:退出浏览器。
假设浏览器最初在网址http://www.game.org/上加载网页。
二、系统设计
2.1 功能模块图
2.2 主要功能函数
函数名 | 功能 |
---|---|
void visit() | 将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 |
void forward() | 将当前页推进到“后退栈”的顶部。取出“前进栈”中顶端的页面,使它成为当前页。若“前进栈”为空,则忽略。 |
void backk() | 将当前页推进到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”为空,则忽略。 |
三、问题分析
按照问题描述
- 首先,设置两个堆栈分别为前进栈(forw)和后退栈(back)。将当前页面压入后退栈顶。
- 接着,编写题目要求的四个指令功能函数及主函数。
- VISIT
<url>
:输入页面后,将该页面压入后退栈的顶部。当前进栈非空时,将前进栈的元素出栈,,直至前进栈为空。最后,输出当前页面。 - BACK:当后退栈中只有当前页面时,忽略该命令,输出“Igonred”。否则,后退至上一个页面,即将当前页面压入前进栈,将当前后退栈中的栈顶元素(即当前页面)弹出,然后输出后退栈顶元素(为上一个页面)即可。
- FORWARD:当前进栈中只有当前页面时,忽略该命令,输出“Igonred”。否则,前进至下一个页面,即将当前页面压入后退栈,将当前进栈中的栈顶元素(即当前页面)弹出,然后输出前进栈顶元素(为下一个页面)即可。
- QUIT:当输入QUIT指令时,结束循环即可。
- 主函数:声明变量ord,用于输入指令。循环判断输入的指令,根据指令执行不同的功能函数,当输入QUIT指令时结束循环。
四、实验结果及分析
模拟浏览器操作程序:根据书中测试输入,输入测试样例如图。得出输出结果。与书中测试结果一致。由此判断完成题目需求。
五、源码
main.cpp
#include <iostream>
#include <string>
#include <stack>
using namespace std;int main()
{stack<string> forw; //前向堆栈stack<string> back; //后向堆栈back.push("http://www.game.org/"); //back的顶部为当前页面string ord; //命令string url; //网址while (1){cin >> ord;if (ord == "VISIT"){cin >> url;back.push(url); //将输入页面压入后向堆栈的顶部while (!forw.empty()) //前向堆栈被清空{forw.pop();}cout << back.top() << endl; //输出当前页面}else if (ord == "BACK"){if (back.size() <= 1) //后向堆栈中只有当前页面{cout << "Ignored" << endl;}else{forw.push(back.top()); //当前页面压入前向堆栈顶部back.pop(); //从后向堆栈弹出cout << back.top() << endl; //输出当前页面}}else if (ord == "FORWARD"){if (forw.empty()) //前向堆栈为空{cout << "Ignored" << endl;}else{back.push(forw.top()); //当前页面压入后向堆栈顶部forw.pop(); //从前向堆栈弹出cout << back.top() << endl; //输出当前页面}}else //QUIT,退出,结束循环{break;}}return 0;
}
总结
此为本人2022年大二下学期数据结构课设中的一道题目。特此记录。
模拟浏览器操作程序(数据结构课设)相关推荐
- 南京航空航天大学2020数据结构课设
南京航空航天大学2020数据结构课设 目录 1.系统进程设计 2.迷宫问题 3.家谱管理系统 4.Huffman编码与解码 5.地铁修建 6.公交线路提示 7.B-树应用 8.排序算法比较 9.数字排 ...
- 数据结构课设_网页形式的景区导游
一.前言 欢迎大家来到这里~~ 1.这次数据结构课设,笔者的题目是网页形式的导航系统. 2.数据结构方面应用了链表存储商品信息.图来存储景点和路径信息.在图的广度优先中还用到了队列: 3.具体的算法有 ...
- 华南农业大学课设——数据结构课设、Java课设、操作系统课设
文章目录 缘起 大二上-数据结构课设(高校教学管理系统)-C++.Qt 视频演示 感想 大二下-Java课设(流程图绘制程序)-JavaFX 视频演示 感想 大三上-操作系统课设(模拟磁盘文件系统实现 ...
- 那些年,我的数据结构课设,现在满满的回忆!(现如今身处内卷之中,已经很难出现当初那份乐趣了)
一.看到这个图标很有感觉 距离当初完成数据结构课设已经过去很久很久了,当初由于U盘失踪,也丢失了很多宝贵的东西,我也伤心的好久`(>﹏<)′!不过最近找到了失散多年的亲兄弟,打开U盘,感概 ...
- 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题
数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...
- 神秘国度的爱情故事 数据结构课设-广州大学
神秘国度的爱情故事 数据结构课设-广州大学 ps:本次课设程序不仅需要解决问题,更需要注重代码和算法的优化和数据测试分析 直接广度优先实现的方法时间复杂度为O(QN),优化后的方法是lca+ ...
- 背包问题求解(数据结构课设)
文章目录 前言 一.题目 二.功能模块图 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目 背包问题的求解:假设有一个能装入总体积为T的背包和n件体积分别为w ...
- 数据结构课设——汉诺塔游戏演示
源代码下载地址:数据结构课设--汉诺塔游戏演示 一. 问题描述 汉诺塔游戏问题中的数据元素具有如下形式: lchild:左孩子结点 rchild:右孩子结点 num:该移动步骤需要移动的盘子的编号 s ...
- 数据结构课设+校园导航系统+西安邮电大学
数据结构课设+校园导航系统+西安邮电大学 设计目的:在校园建设不断完善的现在,为在校学生提供合适的行走路径,为来访的客人提供各种服务的信息:对于这些问题,可用图结构来表示校园交通网络,编写程序完成校园 ...
最新文章
- 报名 | 统计学概论和医疗临床大数据分析讲座
- Apache + PHP为什么不能在www目录下写文件以及如何解决PHP写文件问题
- 指针是c语言的灵魂,C语言之灵魂 指针学习
- Base PyQt4, Simple Web APP Framwork
- 蹭热度?罗永浩:下一个创业项目是“元宇宙公司”
- 01背包问题—动态规划求解
- CDH中配置hive支持update delete
- 【注意】关于fgets函数
- SpringBoot+SQLSERVER2000问题一
- 牛顿插值法python代码_牛顿插值法——用Python进行数值计算
- 轻松搞定——JAVA实现DOC转PDF功能
- Logistic 回归的决策边界
- 什么是SFP光模块?
- java:输入小写字母转为大写字母
- react加水印_图片添加水印
- SpringBoot 轻松搞定数据验证 (一)
- 显卡mx150和230哪个好_MX250和MX150哪个好 MX250和MX150显卡对比全方位评测[多图]
- 首页推荐流支持快捷修改兴趣标签,问答支持展示gif【2021.11.8】
- Google到底有多强大
- mx250是什么_MX250和150有什么区别 MX250和MX150区别对比介绍