散列表Java實現


package 散列表;

import java.util.Scanner;

public class HashSearch {

	public static int data[] = {69,65,90,37,92,6,28,54};
	public static int hash[] = new int[13];
	
	
	//將關鍵字插入到散列表中
	public static void insertHash(int hash[],int m,int data){
		int i = 0;
		i = data%13;//計算散列位置
		while (hash[i] >0) {//位置已經被占用
			i = (++i)%m;//先行探索解決沖突
		}
		hash[i] = data;
	}

	//創建散列表
	public static void createHash(int hash[],int m,int data[],int n){
		for (int i = 0;i<hash.length;i++) {
			hash[i] = 0;
		}
		for (int i = 0;i<n;i++) {
			insertHash(hash, m, data[i]);
		}
		
	}

	//散列表的查找函數的編寫
	public static int hashSearch(int [] hash,int m,int key){
		int i = 0;
		i = key%13;
		while (hash[i] > 0 && hash[i] != key) {//判斷是不是沖突
			i = (++i)%m;
		}
		if (hash[i] == 0) {
			return -1;
		}else{
			return i;
		}
	
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//調用函數創建散列表
		createHash(hash, 13, data, 8);
		System.out.println("散列表各元素的值:");
		for(int i = 0;i<13;i++){
			System.out.print(hash[i]+" ");
		}
		System.out.println();
		System.out.println("輸入查找的關鍵字");
		int key = input.nextInt();
		int pos = hashSearch(hash, 13, key);
		if (pos > 0) {
			System.out.printf("查找成功,該關鍵字位於數組的第%d個位置\n",pos);
		}else{
			System.out.println("查找失敗!");
		}
	}




}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM