/**
* introduction to algorithms, second edition
* 11.4 open addressing tables
* @author 土豆爸爸
* */
public class hashtable
}
private node table; //直接定址表
private node deleted = new node(0);
/**
* 建構函式。
* @param size 表大小
*/
public hashtable(int size)
/**
* 根據鍵值k查詢節點。需要跳過標記為deleted的位置
* @param k 節點的鍵值
* @return 鍵值為k的節點,未找到返回null
*/
public node search(int k) else if(table[j] != deleted && table[j].key == k)
}
return null;
}
/**
* 插入節點x。根據x.key計算雜湊值,如果雜湊值對應的位置
* 已被佔據,查詢下乙個,直到找到乙個空位或標記為deleted的位置。
* @param x 待插入節點
*/
public void insert(node x)
}
throw new runtimeexception("over flow");
}
/**
* 刪除節點x。將刪除節點標記為deleted。
* @param x 待刪除節點
*/
public void delete(node x)
}
}
/**
* 計算雜湊值
* @param key 鍵值
* @return 雜湊值
*/
private int hash(int key, int i)
public string tostring() else
}
return sb.tostring();
}
}import junit.framework.testcase;
public class hashtabletest extends testcase
}
system.out.println(table);
// 找到乙個節點
hashtable.node node = null;
for (int i = 0; i < 100; i++)
}
assertnotnull(node);
table.delete(node);
assertequals(null, table.search(node.key));
}
}
演算法導論示例 InsertSort
introduction to algorithms,second edition 2.1 insertsort author 土豆爸爸 public class insertsort array i 1 key import junit.framework.testcase public clas...
演算法導論示例 MergeSort
introduction to algorithms,second edition 2.3 mergesort author 土豆爸爸 public class mergesort public static void merge int array,int p,int q,int r l i in...
演算法導論示例 PermuteBySorting
introduction to algorithms,second edition 5.3 permute by sorting author 土豆爸爸 public class permutebysorting 根據隨機數組對目標資料進行排序 sort array,p 根據p對array重排 pa...