码迷,mamicode.com
首页 > 其他好文 > 详细

链表之字符(二)

时间:2015-04-25 10:50:06      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
using namespace std;
typedef int ElemType;
int size=0;
typedef struct Node
{
    char name[20];
    float x,y;
    ElemType data;
    Node *next;
}Node,*LinkList;
void Build(LinkList L){
    LinkList p,q;
    int n;
    p=L;
    printf("请输入要建立城市的个数\n");
    scanf("%d",&n);
    while(n--)
    {
        q=(LinkList)malloc(sizeof(Node));
        printf("请输入城市的名字\n");
        scanf("%s",&q->name);
        printf("请输入城市的坐标x\n");
        scanf("%f",&q->x);
        printf("请输入城市的坐标y\n");
        scanf("%f",&q->y);
        q->next=NULL;
        p->next=q;
        p=q;
        size++;
    }
}
void Print(LinkList L)//计算单链表的长度,然后输出单链表
{
    int num=0;
    LinkList p;
    p=L->next;
    while(p)
    {
        num++;
        printf("城市的名字是:\n");
        printf("%s ",p->name);
        printf("城市的坐标是%f %f\n",p->x,p->y);
        p=p->next;
    }
    printf("\n长度为%d:\n",num);
}
void Lookcoordinate(LinkList L){
    LinkList p,q;
    //p=L;
    char a[20];
    printf("请输入你要查找的城市的名字\n");
    scanf("%s",&a);
    for(p = L->next; p != NULL; p = p->next)    
        if(!strcmp(p->name,a))//C/C++函数,比较两个字符串。设这两个字符串为str1,str2,若str1==str2,则返回零  
        {   
            printf("请你要查找的城市的坐标是%f %f\n",p->x,p->y);
            break;  
        }
}
void List(LinkList L){  
    char a[20];
    Node *p;
    Node n;
    int i;  
    float d;    
    float de ;
    cout<<"你给的城市是 :";
    cin>>a ;    
    cout<<"你给的距离是 :";
    cin>>d;
    for(p = L->next; p != NULL; p = p->next)
        if(!strcmp(p->name,a))      break;
    n = *p; p = L->next;
    for(i=0;i<size;i++, p = p->next)    
    {       de=sqrt(((*p).x-n.x)*((*p).x-n.x)+((*p).y-n.y)*((*p).y-n.y));   
    if(de<=d && strcmp(p->name,a))  
    {           cout<<p->name ;     
    cout<<‘(‘<<p->x<<‘,‘<<p->y<<‘)‘<<endl ;     }
    }
}

int main(){
    LinkList L; int n;
    L=(LinkList)malloc(sizeof(Node));
    L->next=NULL;
    Build(L);
    printf("你可以通过选择-----1查找城市名来返回坐标-----\n");
    printf("你可以通过选择-----2查找城市周边符合情况-----\n");
    scanf("%d",&n);
    while (n)
    {
        switch (n)
        {
        case 1:
            Lookcoordinate(L);
            break;
        case 2:
            List(L);
            break;
        }
        scanf("%d",&n);
    }

    // Print(L);
}

链表之字符(二)

标签:

原文地址:http://blog.csdn.net/a819721810/article/details/45267727

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!