class1.cs

来自「C#2005 实例源代码」· CS 代码 · 共 64 行

CS
64
字号
using System;
using System.Collections;

namespace Hashtable_Create
{
	/// <summary>
	/// Hashtable示例:构造一个哈西表
	/// 哈西函数:key = value % 13
	/// </summary>
	class MyHashtable
	{
		public Hashtable htResult=new Hashtable();	//所构造的哈西表

		/// <summary>
		/// 向哈西表中添加一个新的元素
		/// </summary>
		/// <param name="_intNewItem">所要添加的元素</param>
		public void AddItem(int _intNewItem)
		{
			//定义变量
			int pkey=_intNewItem % 13;
			int i=0;

			//线性散列,寻找合适散列位置
			while(this.htResult.Contains(pkey) && i<13)
			{
				pkey=pkey+1%13;
				i++;
			}

			//添加元素
			if(i<13)
				this.htResult.Add(pkey,_intNewItem);
			else
				Console.WriteLine("哈西表溢出。");
		}

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			//实例化MyHashtable对象
			MyHashtable myht=new MyHashtable();
			int pValue=0;
			Console.WriteLine("输入10个整数值:");
			
			//利用MyHashtable的AddItem循环添加数据
			for(int i=0;i<10;i++)
			{				
				pValue=Convert.ToInt32(Console.ReadLine());
				myht.AddItem(pValue);
			}

			//利用foreach语句和DictionaryEntry结构,输出哈西表
			foreach(System.Collections.DictionaryEntry pair in myht.htResult)
			{
				Console.WriteLine("{0}->{1}",pair.Key,pair.Value);
			}
		}
	}
}

⌨️ 快捷键说明

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