数据结构与算法之C#窗体实现单链表存取城市信息

这篇博客介绍了如何使用C#窗体来实现单链表存储和查询城市信息。作者首先明确了城市信息和城市数据表的概念,然后通过代码展示了如何创建一个类来存储城市信息,并利用单链表进行操作,包括根据名称查询和按坐标范围查找。接着,博主详细说明了窗体设计,包括如何通过文本框获取信息并更新界面。最终,博主分享了运行结果和完成该项目的感受,认为虽然起初困难但经过学习后变得有趣且有成就感。
摘要由CSDN通过智能技术生成

问题

在这里插入图片描述
在这里插入图片描述

解答

代码实现

学习过泛型和接口后,我们就有一定的思路去解决这种问题,首先要明确两个概念。
1.城市的名称,坐标属于信息,通过一个City类实现。

public class City : IComparable<City>
    {
   
        public string _name;
        public double _x;
        public double _y;
        public City(string name, double x, double y)
        {
   
            _name = name;
            _x = x;
            _y = y;
        }
        public override string ToString()
        {
   
            return string.Format("城市:{0},X坐标:{1},Y坐标:{2}", _name, _x, _y);
        }
        public int CompareTo(City other)//实现IComparable<City>
        {
   
            return other._x == _x ? 0 : -1;
        }
    }

2.城市数据表属于单链表,由于其还有额外的操作,如给定名称查询城市坐标,给定一个坐标和距离查询距离该坐标小于该距离的城市,于是通过CityList继承单链表SLinkList实现。

public class CityList:SLinkList<City> 
    {
   
        public City[] dataInfo = new City[50];
        public double[] distances = new double[50];
        public int CDLen = 0;
        public City SearchPosInfo (string name) //给定城市名字返回坐标
     {
   
         SNode<City> temp = this.pHead;
         for (int i = 0; i < this.Length; i++) 
         {
   
             if (temp.Data._name == name) 
             {
   
                 return Locate(i).Data;
             }
             temp = temp.Next;
   
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值