




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
要对某人某天所到之处进行跟踪,记录其按时间先后顺序所到过的地方,试设计一个系统完成此任务。此问题的关键是被跟踪对象所到之处可能多,也可能少,是不定的,而且有可能变化很大,采用空间的静态分配来解决存储问题时就不太好确定存储空间规模了,故此应该采用动态分配。动态分配又可分两种情况:一种是在任务中根据所需一次性地分配所需空间,如开发一个针对班级的管理信息系统,虽然各个班级人数不一样,但一个具体的班级的人数是确定的,可以一开始根据班级规模确定所需空间大小,如下例:要存放某个班所有人的年龄,可按如下方式处理空间的分配:#include #include void main()int n,*p;printf(请输入该班人数:);scanf(%d,&n);p=(int *)malloc(n*sizeof(int); /分配所需内存空间if(p=NULL)printf(n空间分配不成功!n);else . . .这种方式是一次性分配,占用连续内存空间。另一种是任务开始时无法预知最终需要多大的内存空间,只能一边运行一边分配,即所谓的多次动态分配。本例就属于这种情况。此例从逻辑上来讲,应该是一种线性结构(前后所到之地之间的逻辑关系是一种1:1的关系),可采用线性链表来实现存储。线性链表的一般形式如下:说明:1、设置一个头指针指向第一个节点;2、因为每个节点所占存储空间可以连续,也可以不连续(不同于数组),为了找到各节点所对应的内存单元,就需要知道所有节点的地址,按常规办法需要定义大量指针变量(个数也不确定),一种可行的办法是链表中前一个节点的指针域保存后一个节点地址,通过前一个节点可以找到后一个节点;3、最后一个节点的指针域一般设置为空“NULL”表示链表的结束。就此例来讲,可能涉及到的情况有如下几种:1、添加:发现此人到了一个新地方,需要记录下来,添加到前一个地名的后面;2、按顺序输出:按跟踪的情况输出此人全天的活动范围;3、查询:查询此人是否到过某地方;4、删除:发现在记录过程中把某个本没有到过的地方给错误地添加进去了,需删除;5、插入:发现某个到过的地方没有记录进去,需插入到已记录下来的某个地名后面;6、修改:某个地名记录有误,需要重新更正;7、释放:此系统已完成任务,不用了,释放对应的链表所占用的内存空间。具体实现过程如下:#include #include #include struct poi_infochar name31; /数据域,存放地名struct poi_info *next;/指针域,存放后一节点地址; /要有“;”/按顺序录入地名,创建单链表void input(struct poi_info *head)int sfjx=1;struct poi_info *q,*p;q=head;while(q-next!=NULL)q=q-next;while(sfjx!=0)p=(struct poi_info *)malloc(sizeof(struct poi_info);if(p=NULL)printf(n空间分配不成功,无法进行记录!n);elseprintf(n请输入要记录地地名:);scanf(%s,p-name);q-next=p;q=p;printf(n是否继续(0结束其它继续):);scanf(%d,&sfjx);q-next=NULL;system(pause);/按从前往后顺序输出所有地名void output(struct poi_info *head)struct poi_info *p;p=head-next;printf(n以下为输出结果:n);while(p!=NULL)printf(%sn,p-name);p=p-next;system(pause);/释放链表空间,使之成为一个空链表void release(struct poi_info *head)struct poi_info *p,*q;p=head-next;while(p!=NULL)q=p-next;free(p);p=q;head-next=NULL;printf(n空间已正常释放!n);system(pause);/根据地名判断是此人所到过的第几个地方void search(struct poi_info *head)int sfjx=1,count;struct poi_info *p;char dcdm31;while(sfjx!=0)p=head-next;count=1;printf(n请输入要查询的地名:);scanf(%s,dcdm);while(p!=NULL)&(strcmp(dcdm,p-name)!=0)p=p-next;count+;if(p=NULL)printf(n此人没有到过以下地方:%sn,dcdm);elseprintf(n%s是此人到过的第%d站。n,dcdm,count);printf(n是否继续(0结束其它继续):);scanf(%d,&sfjx);system(pause);/从链表中删除指定的某些地方void del(struct poi_info *head)int sfjx=1;struct poi_info *p,*q;char dcdm31;while(sfjx!=0)q=head;p=head-next;printf(n请输入要删除的地名:);scanf(%s,dcdm);while(p!=NULL)&(strcmp(dcdm,p-name)!=0)q=p;p=p-next;if(p=NULL)printf(n此人没有到过以下地方:%sn,dcdm);elseq-next=p-next;free(p);printf(n已成功删除!n);printf(n是否继续(0结束其它继续):);scanf(%d,&sfjx);system(pause);/往某个地名前插入一个地名void insert(struct poi_info *head)int sfjx=1;struct poi_info *p,*q,*x;char dcdm31;while(sfjx!=0)q=head;p=head-next;printf(n请输入用于指示位置的地名:);scanf(%s,dcdm);while(p!=NULL)&(strcmp(dcdm,p-name)!=0)q=p;p=p-next;if(p=NULL)printf(n此人没有到过以下地方:%s,无法确定插入位置!n,dcdm);elsex=(struct poi_info *)malloc(sizeof(struct poi_info);if(x=NULL)printf(n空间分配不成功,无法进行记录!n);elseprintf(n请输入要插入地的地名:);scanf(%s,x-name);x-next=p;q-next=x;printf(n已成功插入!n);printf(n是否继续(0结束其它继续):);scanf(%d,&sfjx);system(pause);/修改某一指定的地名void modify(struct poi_info *head)int sfjx=1;struct poi_info *p;char dcdm31;while(sfjx!=0)p=head-next;printf(n请输入要修改的地名:);scanf(%s,dcdm);while(p!=NULL)&(strcmp(dcdm,p-name)!=0)p=p-next;if(p=NULL)printf(n此人没有到过以下地方:%sn,dcdm);elseprintf(n原地名为%s,请输入新地名:,dcdm);scanf(%s,p-name);printf(n已成功修改!n);printf(n是否继续(0结束其它继续):);scanf(%d,&sfjx);system(pause);void main()int xz=1;struct poi_info *head;head=(struct poi_info *)malloc(sizeof(struct poi_info);if(head=NULL)printf(n空间分配不成功!n);elsehead-next=NULL;while(xz!=0)printf(n欢迎使用民用跟踪记录系统!nnn);printf(1添加2输出3查询4删除5修改6插入0退出n);printf(n请选择:);scanf(%d,&xz);if(xz=1)input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小小农场体验活动的组织计划
- 领导岗位任职资格设置计划
- 数据科学在商业中的应用试题及答案
- 学校秋季特色课程设计计划
- 业务计划编制与风险考核试题及答案
- 计算机网络安全管理题及答案
- 高中阶段学业规划辅导计划
- 秋季全员培训与学习计划
- 备考2025年VB考试试题资源
- 2025届四川省眉山市名校数学八下期末检测模拟试题含解析
- 《安全生产法解读课件》
- (二模)临沂市2025年高三高考模拟考试英语试题卷(含答案)
- 解除分公司经营合同协议
- 湖南省天壹名校联盟2025届高三5月适应性考试(物理)
- 2025年中考英语考纲词汇(包括词性词义词转短语)
- 老人财产处置协议书范本
- 天一大联考·天一小高考2024-2025学年(下)高三第四次考试生物试题及答案
- 江西省赣州市2025届高三二模语文试题及参考答案
- 消化内科笔试试题及答案
- 机场地勤笔试题及答案
- 端午节的美食与风味
评论
0/150
提交评论