将若干城市的信息存如一个带头结点的单链表,结点中的城市信息包括城市名,城市的位置坐标,.

要求:1:给定一个城市名,返回其位置坐标,2:"给定一个位置坐标P和一个距离D,返回所有与的距离最小等于D的城市。

第1个回答  2013-03-11
#include
#include
typedef struct Node{
char data1;
int data2,data3;
struct Node *next;
}Node,*LinkList L;
void Initlinklist(LinkList *l)/*对单链表进行初始化*/{
*l=(LinkList)malloc(sizeof(Node));
(*l)->next=NULL;
}
void CreateFromTail(LinkList L)
{
Node *r, *city;
char *b;
int flag=1,c,d;/*设置一个标志,初值为1,当输入"$"时,flag为0,建表结束*/
r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/
{
printf("input the City:\n");
b=gets();//获取城市名
printf("input the
site:\n");
scanf("%d%d",&c,&d);//获取城市坐标
if(!strcmp(b,"$"))//跳出条件
{
city=(Node*)malloc(sizeof(Node));
city->data1=*b;
city->data2=c;
city->data3=d;
r->next=city;
r=city;
}
else
{
flag=0;
r->next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/
}
}//while
}

int search()//查找城市坐标 {
LinkList L;
Node *p,*q;
int flag=0;
int i;
char
c;
Initlinklist(&L);
printf("input
the element,end by '$'\n");
CreateFromTail(L);//尾插建立单链表
p =L->next;
printf("Which city are you
want to search:\n");
q=gets();//获取城市名
while(p!=NULL)
{
if(strcmp(p->data1,q)){//比较输入的城市名是否存在
printf("%s's site
is:(%d,%d)",p->data1,p->data2,p->data3);//输出名字于坐标
p=NULL;//跳出循环
break;
}
p=p->next;//下一位
}//while
}

int count()//计算符合要求的城市 {
LinkList L;
Node *p,*q;
int flag=0;
int i,e,f,g,h;
char c;
Initlinklist(&L);
printf("input the element,end by '$'\n");
CreateFromTail(L);//尾插建立单链表
p
=L->next;
printf("Input the site:\n");
scanf("%d%d",&e,&f);//获取坐标
printf("Input the distance:\n");
scanf("%d",&g);//获取距离
while(p!=NULL)
{
f=e+f+g;//条件2的满足条件
g=p->data2+p->data3;
if(g<=f){
printf("%s's site
is:(%d,%d)\n",p->data1,p->data2,p->data3);
h++;//计算符合要求的城市个数
}
p=p->next;

}//whileprintf("There are %d cities to
meet the requirements\n",h);
}
第2个回答  2007-10-19
...
好复杂。。。。

将若干城市的信息存如一个带头结点的单链表,结点中的城市信息包括城市名...
void Initlinklist(LinkList *l)\/*对单链表进行初始化*\/{ l=(LinkList)malloc(sizeof(Node));(*l)->next=NULL;} void CreateFromTail(LinkList L){ Node *r, *city;char *b;int flag=1,c,d;\/*设置一个标志,初值为1,当输入"$"时,flag为0,建表结束*\/ r=L; \/*r指针动态指向...

将若干城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名...
city=(Node*)malloc(sizeof(Node));city->data1=*b;city->data2=c;city->data3=d;r->next=city;r=city;} else { flag=0;r->next=NULL; \/*将最后一个结点的next链域置为空,表示链表的结束*\/ } }\/\/while } int search()\/\/查找城市坐标 { LinkList L;Node *p,*q;int flag=0...

将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城 ...
cout<<"请给出你想查询的城市的名称:";cin>>name;

若干城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名...
其实链表很简单,链表不是记录了市名与坐标吗!你只要先找到你所要的市名,找市名可以一一比较,用字串比较,如相同,则输出它的坐标,即是此结构的一个成员值!当它给一个P 和 D 时,你只要扫描所有结点,将所有坐标与P进行比较,只要小于等于D则输出!http:\/\/www.baidu.com\/s?cl=3&wd=%...

凯文林奇城市意象五要素【道路,结点,区域,界限,标志】分别是什么意思...
3、 区域:区是城市中中等尺度或大尺度的组成单元,它们代表着两个不同尺度的范围。观察者们在精神上深入它们“内部”,它们由于具有一些个性鲜明的共有特征而易于被人们所感知。从内部看,它们总是易于辨认的;如果从外部可见的话,它们也常被用作外部空间的参照物。4、边界:边界是一种线性元素,是...

已知head指向一个带头结点的单词链表,链表中每个结点包含数据long和指向...
内存分配失败 *\/exit (OVERFLOW);(*L)->next = NULL; \/* 指针域为空 *\/}\/* 销毁 *\/\/* 初始条件:单链表L已存在。操作结果:销毁单链表L *\/void destroyList (linkList L) {linkList p,q;p = L->next; \/* p指向第一个结点 *\/while (p) { \/* 没到表尾 *\/q = p->next;...

有一个线性表(a1,a2,...,an),采用带头结点的单链表L存储.设计一算法将...
\/* 操作结果:用e返回L中第i个数据元素的值 *\/ Status GetElem(LinkList L,int i,ElemType *e){ int j;LinkList p; \/* 声明一结点p *\/ p = L->next; \/* 让p指向链表L的第一个结点 *\/ j = 1; \/* j为计数器 *\/ while (p && jnext; \/* 让p指向下一个结点 *\/ ...

数据结构设计一个单链表(链表带头结点)中结点个数的算法,并依次输出链 ...
\/\/这是数据对象 typedef struct node{ char name;\/\/这是元素的值 struct node *next;}Node; \/\/下面是算法 int Out_Node(Node *H){int i=0;\/\/i表示结点的个数 Node *p;p=H;while(p){printf("%c",p->name);\/\/输出元素的值p=p->next;i++;} return i;} ...

数据结构作业
2.7 试编写在带头结点的动态单链表和静态单链表上实现线性表操作Length(L)的算法,并将长度写入头结点的数据域中。★(1) typedef int datatype; typedef struct node { datatype data; struct node *next; } linklist; void Length1(linklist *L) { linklist *p=L-next; int i=0; while(p) { i++;...

带头结点的单链表head为空的判断条件是?
带头结点的单链表head为空的判断条件是:head->next==NULL 链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用于数据元素的存储,另一个域是指向其他单元的指针。这里具有一个数据域和多个指针域的存储单元通常称为 结点(node)它是构成单链表的基本结点结构...

相似回答