📄 openscattertablev2.cs
字号:
namespace Opus6
{
using System;
[Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng."), Version("$Id: OpenScatterTableV2.cs,v 1.4 2001/10/28 19:50:09 brpreiss Exp $")]
public class OpenScatterTableV2 : OpenScatterTable
{
public OpenScatterTableV2(int length) : base(length)
{
}
public static void Main()
{
Opus6.Console.WriteLine("OpenScatterTableV2 Test");
HashTable table1 = new OpenScatterTable(0x39);
AbstractHashTable.TestHashTable(table1);
}
public override void Withdraw(ComparableObject obj)
{
int num2;
if (base.count == 0)
{
throw new ContainerEmptyException();
}
int num1 = base.FindInstance(obj);
if (num1 < 0)
{
throw new ArgumentException("object not found");
}
Label_002A:
num2 = (num1 + 1) % this.Length;
while (base.array[num2].state == OpenScatterTable.EntryState.OCCUPIED)
{
int num3 = base.H(base.array[num2].obj);
if ((((num3 <= num1) && (num1 < num2)) || ((num1 < num2) && (num2 < num3))) || ((num2 < num3) && (num3 <= num1)))
{
break;
}
num2 = (num2 + 1) % this.Length;
}
if (base.array[num2].state != OpenScatterTable.EntryState.EMPTY)
{
base.array[num1] = base.array[num2];
num1 = num2;
goto Label_002A;
}
base.array[num1] = new OpenScatterTable.Entry(OpenScatterTable.EntryState.EMPTY, null);
base.count--;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -