跟踪系统的C语言实现.doc

跟踪系统的C语言实现.doc

ID:49690564

大小:77.00 KB

页数:7页

时间:2020-03-02

跟踪系统的C语言实现.doc_第1页
跟踪系统的C语言实现.doc_第2页
跟踪系统的C语言实现.doc_第3页
跟踪系统的C语言实现.doc_第4页
跟踪系统的C语言实现.doc_第5页
资源描述:

《跟踪系统的C语言实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、要对某人某天所到之处进行跟踪,记录其按时间先后顺序所到过的地方,试设计一个系统完成此任务。此问题的关键是被跟踪对象所到之处可能多,也可能少,是不定的,而且有可能变化很大,采用空间的静态分配来解决存储问题时就不太好确定存储空间规模了,故此应该采用动态分配。动态分配又可分两种情况:一种是在任务中根据所需一次性地分配所需空间,如开发一个针对班级的管理信息系统,虽然各个班级人数不一样,但一个具体的班级的人数是确定的,可以一开始根据班级规模确定所需空间大小,如下例:要存放某个班所有人的年龄,可按如下方式处理空间的分配:#include#inc

2、ludevoidmain(){intn,*p;printf("请输入该班人数:");scanf("%d",&n);p=(int*)malloc(n*sizeof(int));//分配所需内存空间if(p==NULL)printf("空间分配不成功!");else{...}}这种方式是一次性分配,占用连续内存空间。另一种是任务开始时无法预知最终需要多大的内存空间,只能一边运行一边分配,即所谓的多次动态分配。本例就属于这种情况。此例从逻辑上来讲,应该是一种线性结构(前后所到之地之间的逻辑关系是一种1:1的关系),可采用线性链表

3、来实现存储。线性链表的一般形式如下:说明:1、设置一个头指针指向第一个节点;2、因为每个节点所占存储空间可以连续,也可以不连续(不同于数组),为了找到各节点所对应的内存单元,就需要知道所有节点的地址,按常规办法需要定义大量指针变量(个数也不确定),一种可行的办法是链表中前一个节点的指针域保存后一个节点地址,通过前一个节点可以找到后一个节点;3、最后一个节点的指针域一般设置为空“NULL”表示链表的结束。就此例来讲,可能涉及到的情况有如下几种:1、添加:发现此人到了一个新地方,需要记录下来,添加到前一个地名的后面;2、按顺序输出:按跟踪的情况输出此人全

4、天的活动范围;3、查询:查询此人是否到过某地方;4、删除:发现在记录过程中把某个本没有到过的地方给错误地添加进去了,需删除;5、插入:发现某个到过的地方没有记录进去,需插入到已记录下来的某个地名后面;6、修改:某个地名记录有误,需要重新更正;7、释放:此系统已完成任务,不用了,释放对应的链表所占用的内存空间。具体实现过程如下:#include#include#includestructpoi_info{charname[31];//数据域,存放地名structpoi_info*next;//指

5、针域,存放后一节点地址};//要有“;”//按顺序录入地名,创建单链表voidinput(structpoi_info*head){intsfjx=1;structpoi_info*q,*p;q=head;while(q->next!=NULL)q=q->next;while(sfjx!=0){p=(structpoi_info*)malloc(sizeof(structpoi_info));if(p==NULL)printf("空间分配不成功,无法进行记录!");else{printf("请输入要记录地地名:");scanf("%s",

6、p->name);q->next=p;q=p;}printf("是否继续(0-结束 其它-继续):");scanf("%d",&sfjx);}q->next=NULL;system("pause");}//按从前往后顺序输出所有地名voidoutput(structpoi_info*head){structpoi_info*p;p=head->next;printf("以下为输出结果:");while(p!=NULL){printf("%s",p->name);p=p->next;}system("pause");}//释放链表空间,

7、使之成为一个空链表voidrelease(structpoi_info*head){structpoi_info*p,*q;p=head->next;while(p!=NULL){q=p->next;free(p);p=q;}head->next=NULL;printf("空间已正常释放!");system("pause");}//根据地名判断是此人所到过的第几个地方voidsearch(structpoi_info*head){intsfjx=1,count;structpoi_info*p;chardcdm[31];while(sfjx!

8、=0){p=head->next;count=1;printf("请输入要查询的地名:");scanf(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。