书签 分享 收藏 举报 版权申诉 / 27

类型数据结构上机实验报告.docx

  • 文档编号:11645830
  • 上传时间:2023-03-29
  • 格式:DOCX
  • 页数:27
  • 大小:1.32MB


2.算法说明

(1)概要说明:

为实现上述程序功能,我们利用栈的数据结构,首先新建一个字符型栈,依次读入目标.htm文件的字符,当遇到左标签符“<”时进栈,后面字符继续进栈,当遇到右标签符“>”时,后面的内容写入新文件new.htm中,循环这个过程,当原文件结束时,得到去除tag符的新文件new.htm。

(2)程序主要模块

主要模块有:

头文件、栈定义及栈函数、实现读取与写入非tag内容操作的主函数

{InitStack(&S)

操作结果:

构造一个空栈S。

Push(&S,e)

初始条件:

栈S已存在。

操作结果:

插入元素ch为新的栈顶元素。

}

1.栈定义及栈函数:

用结构体定义栈,并实现对栈的以下操作:

构造栈、入栈

2.实现读取与写入非tag内容操作的主函数:

这一步借助C++的文件流实现,定义两个文件流,人流与出流,入流读取.htm文件,做完入栈操作到了非tag内容时将字符写入new.htm文件中。

3.实验总结

上次实验是对栈的初次计算机程序实现,需要的栈操作也更多,而这次可以说是对栈操作的一次熟练。

需要注意的就是实验之前需要将需要读取的文件放在程序目录下以便读取,结果文件是同样目录下的new.htm,可以用记事本打开查看。

还有一点美中不足的就是,.htm文件通常在开头会包括很多设置性语句,如语句a{text-decoration:

none;color:

#FFF;font-size:

16px;font-family:

"微软雅黑";position:

relative;float:

left;display:

block;}用来设置字体,当前实现的程序没有考虑这种问题。

与实验一相同,程序的界面化、可交互也是没有完全实现的问题,问题在于edit控件无法显示.htm文件中的中文字符,会显示乱码,而这样做的好处在于可以不用管待读取文件的目录问题,可以在对话框中选择路径。

4.附1:

程序清单

#defineOK1

#defineERROR0

#defineOVERFLOW-1

#defineSTACK_INIT_SIZE100

#defineSTACKINCREMENT10

#include//输入输出需要

#include

usingnamespacestd;

//结构体部分

typedefintStatus;

typedefstruct

{

char*base;

char*top;

intstacksize;

}SqStack;

StatusInitStack(SqStack&S)

{

S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));

if(!

S.base)exit(OVERFLOW);

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

returnOK;

}//InitStack

StatusPush(SqStack&S,chare)

{

//插入元素e为新的栈顶元素

if(S.top-S.base>=S.stacksize)//栈满,追加存储空间

{

S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));

if(!

S.base)returnERROR;

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}//if

*S.top++=e;

returnOK;

}//Push

intmain()

{

SqStacklabel;

InitStack(label);

charc;

ifstreamin;

in.open("index.htm");//待读取文件

if(!

in)

{

cout<<"cannotopenoldfile.";

return1;

}

ofstreamout;

out.open("new.htm");//去除tag文件

if(!

out)

{

cout<<"cannotopennewfile.";

return1;

}

in.get(c);

while(in){

while(c=='<'){

Push(label,c);

in.get(c);

while(c!

='>'){

Push(label,c);

in.get(c);

}

Push(label,c);

in.get(c);

}

if(in){

out.put(c);

}

in.get(c);

}

in.close();

out.close();

return0;

}

5.附2:

运行结果

分别对实验简介中的两个.htm文件做测试:

(一)qingtianzhe的个人主页

a{text-decoration:

none;color:

#FFF;font-size:

16px;font-family:

"微软雅黑";position:

relative;float:

left;display:

block;}

.nav{background-color:

#000;overflow:

hidden;height:

50px;}

a:

hover{border-bottom:

5pxsolid#09F;font-size:

18px;font-family:

"迷你简菱心";}

.navbox{width:

610px;margin:

auto;}

.navboxa{margin:

15px20px;padding-bottom:

12px;}

 

qingtianzhe的个人主页...

 

qingtianzhe的个人主页...

基本信息

作品

兴趣爱好

足迹

学习生活

我的非诚勿扰

如下图:

(二)学院主页:

由于文件较长,只给出部分截图:

去除tag前

去除tag后:

 

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
数据结构 上机 实验 报告
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:数据结构上机实验报告.docx
链接地址:https://www.bdocx.com/doc/11645830.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开