⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 storage.cs

📁 四种算法求最短路径的例子
💻 CS
字号:
////////////////////////////////////
////   读取数据文件    ////////////
//////////////////////////////////
using System;
using System.Xml;
using System.Drawing;
using System.Collections;

namespace short_path
{
	/// <summary>
	/// storage 的摘要说明。
	/// </summary>
	/// 
	
	public class nodeInfo : Hashtable
	{
		public Point point, srcPoint;
		public double w;
		public Color color;
	}

	public class Storage
	{
		public Hashtable points = null;
		public int maxx =0, maxy = 0;
		public int minx = Int32.MaxValue, miny = Int32.MaxValue;
		public string startpoint, endpoint;

		public Storage()
		{
			startpoint = "50,160";
			endpoint = "780,120";
		}

		public void readFile()
		{
			XmlTextReader xr = new XmlTextReader("CAMBRIDGE.DATA");
			XmlDocument xd = new XmlDocument();
			xd.Load(xr);
			xr.Close();
			XmlNode xfn = xd.FirstChild;

			int x1,x2,y1,y2;
			points = new Hashtable(30);
			foreach(XmlNode xn in xfn.ChildNodes)
			{
				x1 = Int32.Parse(xn["x1"].InnerText);
				y1 = Int32.Parse(xn["y1"].InnerText);
				x2 = Int32.Parse(xn["x2"].InnerText);
				y2 = Int32.Parse(xn["y2"].InnerText);
				if(maxx < x1 || maxx < x2)	maxx = x1>x2?x1:x2;
				if(maxy < y1 || maxy < y2)	maxy = y1>y2?y1:y2;
				if(minx > x1 || minx > x2)	minx = x1<x2?x1:x2;
				if(miny > y1 || miny > y2)	miny = y1<y1?y1:y2;
				double dis = Math.Sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
				if(points[x1.ToString()+','+y1.ToString()] == null)
				{
					nodeInfo n2 = new nodeInfo();
					n2.w = dis;
					n2.point.X = x2;
					n2.point.Y = y2;
					n2.color = Color.Pink;

					nodeInfo n1 = new nodeInfo();
					n1.point.X = x1;
					n1.point.Y = y1;
					n1.color = Color.Blue;
					n1[x2.ToString()+','+y2.ToString()] = n2;
					points[x1.ToString()+','+y1.ToString()] = n1;
				}
				else
				{
					nodeInfo n2 = new nodeInfo();
					n2.w = dis;
					n2.point.X = x2;
					n2.point.Y = y2;
					n2.color = Color.Pink;
					((nodeInfo)(points[x1.ToString()+','+y1.ToString()]))[x2.ToString()+','+y2.ToString()] = n2;
				}
				if(points[x2.ToString()+','+y2.ToString()] == null)
				{
					nodeInfo n2 = new nodeInfo();
					n2.w = dis;
					n2.point.X = x1;
					n2.point.Y = y1;
					n2.color = Color.Pink;

					nodeInfo n1 = new nodeInfo();
					n1.point.X = x2;
					n1.point.Y = y2;
					n1.color = Color.Blue;
					n1[x1.ToString()+','+y1.ToString()] = n2;
					points[x2.ToString()+','+y2.ToString()] = n1;
				}
				else
				{
					nodeInfo n2 = new nodeInfo();
					n2.w = dis;
					n2.point.X = x1;
					n2.point.Y = y1;
					n2.color = Color.Pink;
					((nodeInfo)(points[x2.ToString()+','+y2.ToString()]))[x1.ToString()+','+y1.ToString()] = n2;
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -