数据结构实验1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要数据结构
typedef struct Node { City data; struct Node *next; }Node,*LinkList;
主要算法
InitList(LinkList *H) //建立带头结点的链表H creatlist(LinkList h) //将城市信息写入链表 getCityPosition(LinkList h,char a[20]) //在链表中查找城市信息,并输出 void search(LinkList h,float a,float b,float j) //查找距某点不超过D的城市 并输出 void main() //主函数,用于基本的输入输出调用各算法及 协调各个功能的实现 { LinkList c; int a,b,d; InitList(&c); freopen("1.txt","r",stdin); creatlist(c); fclose(stdin); getCityPosition(c,"º£ÃÅ"); printf("\n"); search(c,34.5,30.2,100); }
1. 将若干城市的信息存入一个带头结点的单链表,结点中的城市信息 包括城市名、城市的位置坐标。要求: (1) 给定一个城市名,返回其位置坐标; (2) 给定一个位置坐标P和一个距离D,返回所有与P的距离小于 等于D的城市。 2. 回文判断。称正读与反读都相同的字符序列为“回文”序列。 试写一个算法,判断依次读入的一个以@为结束符的字母序列, 是否为形如‘序列1 &序列2’模式的字符序列。其中序列1和序 列2 中都不含字符‘&’,且序列2 是序列1的逆序列。例 如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则 不是。
源自文库
struct City {char name[20]; float wd,jd;}; typedef struct Node { City data; struct Node *next; }Node,*LinkList; InitList(LinkList *H) { *H=(LinkList)malloc(sizeof(Node)); (*H)->next=NULL; return OK; } creatlist(LinkList h) { int i; LinkList p; for(i=0;i<N;i++) { p=(LinkList)malloc(sizeof(Node));
淮海工学院计算机工程学院 实验报告书
课 程 名 : 《 数 据 结 构》 题 目: 实验1 线性数据结构及其应用 班 级: 姓 名:
评语:
成绩:
指导教师: 批阅时间: 年 月 日
实验1 线性数据结构
实验目的和要求 1、掌握线性表、栈和队列等抽象数据类型的定义 2、掌握线性表抽象数据类型的实现。 3、结合具体应用,掌握线性表、栈和队列等的使用方 法。 实验环境 Turbo C 或VC++ 实验学时 4学时,必做实验 实验内容
7. 在使用指针时尽量不要命名的太相近,容易混淆.
附源代码
#include<iostream.h> #include<stdio.h> #include<math.h> #include<process.h> #include<malloc.h> #include<string.h> #define OK 1; #define ERROR 0; #define N 50
scanf("%s",p->data.name); scanf("%f%f",&(p->data.wd),&(p->data.jd)); p->next=h->next; h->next=p; h=p; } h->next=NULL; return OK; } getCityPosition(LinkList h,char a[20]) { Node *p; p=h->next; while(p!=NULL) { if(strcmp(a,p->data.name)==0) { printf("\n查找结果: %s\t纬度: %.4f\t经度: %.4f",p->data.name,p>data.wd,p->data.jd); break; } else p=p->next; } return OK; } void search(LinkList h,float a,float b,float j) { Node *p; p=h->next; while(p!=NULL) { float c,d,z; c=p->data.wd; d=p->data.jd; z=(a-c)*(a-c)+(b-d)*(b-d);
if(z<=j*j) { printf("%s\n",p->data.name); p=p->next; } else p=p->next; } } void main() { LinkList c; int a,b,d; InitList(&c); freopen("1.txt","r",stdin); creatlist(c); fclose(stdin); getCityPosition(c,"ÐìÖÝ"); printf("\n"); printf("距离徐州不超过3的城市有:\n"); search(c,34.15,117.11,3); }
运行结果
实验体会 1. 在写程序前要仔细思考题目,避免在写程序时出现不必 要的问题. 2. 在写程序时一定要保持思维清晰,在感觉没有头绪式思 绪混乱时宁停下来冷静一会,也不要硬撑向下定,这样 多半写出来的还是错的. 3. 在写程序时最好写一部分检验一下,这样更有利于发现 问题的所在,对于较长的算法来说,若写完才检验出错 十分不易发现错误的出处. 4. 当出现错误时不要心急,一步一步的顺推或逆推,找到 问题所在,进一点解决. 5. 编写过程中遇到问题要虚心请教. 6. 数据结构中的算法与C、C++中的有些不同且名字较 长,所以要看清弄明白再使用.