通過hash函式將字串,或者乙個數字,經過整理變為陣列的下標。
這樣我們就可以得到乙個時間複雜度為1的表。
而分離鏈結法
就是如果有倆個或以上的不同的key值hash化計算後結果相同。將這些值放在鍊錶中。
//使用分離鏈結法的hashtable 實現
public
class myhashtable
//初始化hashtable
public
myhashtable()
//實際的構造方法 1構造乙個鍊錶組,2
public
myhashtable(int size)
// 放入新的key值在hash表中
public
void
insert( anytype value)
}// 移除key值
public
void
remove( anytype value)
}//判斷是否有這個key
public boolean contains( anytype value)
//清空hash表
public
void
makeempty()
private
static final int default_table_size = 101;
private linkedlist thelists;
private
int currentsize;
//此函式將value 轉化為陣列下標
private
intmyhash(anytype value)
//如果引數是素數直接返回引數,否則返回下乙個素數
private
static
intnextprime( int n )
private
static boolean isprime( int n )
return
true;}}
資料結構實戰java實現棧
在之前的myarraylist和mylinkedlist基礎上都可以很方便的實現棧。先進後出 學習計算機基本要素可以深入了解棧的作用。直接使用arraylist的add方法加乙個代表棧指標的變數即可。由於棧不需要索引所以只需要使用單鏈表即可 public class mystack public a...
資料結構 Java實現 排序
直接插入排序 希爾排序 二分插入 簡單選擇排序 堆排序歸併排序 快速排序 氣泡排序 桶式排序 基數排序 插入排序由n 1趟排序組成,對於p 1到p n 1趟,保證位置0到p上的元素為已排序狀態。在第p趟,將位置p上的元素向左移動到正確位置。s n o n 2 public static super ...
資料結構 Java實現佇列
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 head 進行刪除操作,而在表的後端 tail 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入...