数据结构实习报告(4)

2018-11-17 21:37

class Tele //功能类 {

public:

Tele(); //构造函数 ~Tele(); //析构函数

void Save(); //数据保存到文件 TeleNumber * Search(char *); //信息查找 void Sort(); //排序 void Insert(); //插入 void Delete(); //删除

void Change(); //更改个人信息 void Show(); //显示个人信息 void Swap(TeleNumber *,TeleNumber *); private:

TeleNumber * End,* Head;

ifstream infile; //定义读,写文件对象 ofstream outfile; };

在Tele的构造函数中建立单链表存储结构体TeleNumber:

Tele::Tele() {

Head=new TeleNumber; //头插法建立单链表 Head->Next=new TeleNumber; End=Head->Next;

infile.open(\打开外存文件,看是否有数据存在

while(!infile.eof()) //如果有,则打开,并将数据读取到程序 {

End->ReadFile(infile);

if(End->name[0]=='\\0')break; End->Next=new TeleNumber; End=End->Next; }

// infile.close(); }

文件保存:

void Tele::Save() //保存文件 {

outfile.open(\建立外存文件a1.txt for(TeleNumber *p=Head->Next;p!=End;p=p->Next)

outfile<name<<\ \ \\将数据存到外存文件里 outfile.close();

cout<<\保存成功!\}

主界面及其功能设计: int main() {

bool flag=true; Tele tele; char name[20]; while(flag) {

//system(\

Cout<< “ 个人电话号码查询系统 \ cout<<\请选择您所需要的操作: \ cout<<\增加电话号码 \ cout<<” B.显示电话号码 \ cout<<\排序个人电话 \ cout<<\查找个人电话 \ cout<<\删除个人信息 \ cout<<\修改个人信息 \ cout<<\保存个人信息 \ cout<<\退出系统 \ char x; do{

cin>>x; {

switch(x) {

case 'A':tele.Insert();break; case 'B':tele.Show();break; case 'C':tele.Sort();break;

case 'D':cout<<\请输入查找人姓名\ cin>>name;

tele.Search(name);break; case 'E':tele.Delete();break;

case 'F':tele.Change();break; case 'G':tele.Save();break;

case 'K':cout<<\谢谢您的使用!\

default:break; }

}

}while(x!='K'); }

return 0; }

(6)附录:运行结果

查找:

修改:

四、火烧连营

(1)需求规格说明:

【问题描述】:

“火烧连营”是三国演义中的著名典故之一广为流传,假定文本文件c1.txt 是火烧连营中的军营分布图,每个字符A 代表一个营帐,营帐是可燃物,其他字符代表不可燃的空白地段,文件共有40 行70 列,从键盘输入任意点的x 和y值(x<70,y<40)作为着火点,“火烧连营”后,被燃烧的营帐标上字符’X’。

【基本要求】:

从文本c1.txt读入内容,再从键盘输入任意点的x 和y值(x<70,y<40)作为着火点,“火烧连营”后,被燃烧的营帐标上字符’X’,并把整个结果输出到文件c2.txt

(2)总体设计与要求:

【算法设计】:

设计思想:

在上课时老师给我们讲过一个迷宫的例子,就是从一个点出发,前后左右遍历跟这个点相关联的连通点,而这道题目就和迷宫题有相似之处,只要开辟一个堆栈,先将着火点压栈,然后重复一下操作:栈顶点出栈并标记X,同时将符合被燃烧条件的邻居点入栈。。。。,直到栈空为止。

设计表示:

输入着火点

遍历

输出结果 Stack.File.Add() 可燃点弹出 着火点压栈 判断是否可燃 Infile.c1.txt 读入数据 fire.[i][j] File.IsEmpty() Delete()

(3)程序结构分析:

本程序虽然也是涉及到外存与内存但没有要求相互对应,只需将外存数据读入内存,在

内存中把着火点表示出来就好了,所以相对来说还是比电话号码查询要简单,最主要的步骤就是前后左右遍历着火点,直到所有与之连通点都被遍历就好了,这需要几个if语句想嵌套就好了。

(4)编程遇到的问题及改进方法:刚开始遍历营帐时没出什么大的问题,但在火

烧完要输出结果时遇到了问题,输出图案不对,因为在读文件时,只顾着读而忽略了,每读完一行时都要换行,最后在for语句中加了个换行的指令,图案就对了。

(5)编码:

判断是否可燃: bool judge(char a) {

if(a=='A') {

return 1;


数据结构实习报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015-2020年中国典当投资市场竞争状况分析及前景发展策略研究报

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: