Bilgilendirme : İçerik adresleri değişmiştir. Lütfen, aradığınız içeriği arama kutucuğundan arayınız =)

Aramak istediğiniz sözcüğü giriniz...

Java
Programlama
  • Java
  • Python
  • C++
  • C#
  • MATLAB
  • MIPS Assembly
  • PIC Assembly
Web Prog.
  • HTML
  • CSS
  • PHP
  • Javascript
Veritabanı Prog.
  • SQL
Arama Yap
İstediğin programlama dilinde sınıf, fonksiyon yada bir terimi arama alanına yaz.
Çıkan seçeneklere göz at
Seçenekler arasından senin işine yaradığı seçeneği seç.
İçeriğe göz at
Seçtiğin seçenekte yer alan örneğe bakarak bilgi edin ya da kullan.
MEHMET ERIM
2019-07-31

Açıklama

  • Hash Table ( Karım Tablosu ) algoritması, eklenecek olan veriden bir tam sayı elde ederek ve o elde edilen sayı ile dizide hangi indise yerleştirileceğini belirler.
  • Eğer elde edilen indis numarası, önceden eklenmiş olan veri ile  aynı ise bulunan indis değerdeki değerin sağına bağlantı yaparak ekleme yapar. Bunu linkedlist gibi düşünebilirsiniz.

 

Görsel olarak gösterim

hash-table

 

 

Kod

package hashtable;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {

  public static void main(String args[]) {

		try {
			
	            Scanner s = new Scanner(new File("words.txt")); // dışardan kelime listesini hashtable ekleme
			
		    HashTable hashtable = new HashTable(256);
			
			while(s.hasNextLine()) {
				//System.out.println(s.nextLine());
				hashtable.add(new Node(s.nextLine()));
			}

                    System.out.println(hashtable.find("KodSözlük")); // hashtable'da veri arama işlemi
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

  }

}



class HashTable {

  final int ALPH = 256;

  Node table[];

  private int SIZE;

  public HashTable(int SIZE) {

    table = new Node[SIZE];

    this.SIZE=SIZE;

  }

 
  int hash(String str){

    int h=0;

    for(int i=0;i<str.length();i++){

      h=((h*ALPH)+str.charAt(i))%SIZE;

    }

    return h;

  }

  void yazdir() {

    for(int i=0;i<SIZE;i++) {

      Node tmp = table[i];

      while(tmp!=null) {

        System.out.print(i+". "+tmp.icerik+" ");

        tmp=tmp.next;

      }

      System.out.println("");

    }
  }

  boolean delete(String str) {

    if(find(str)) { 

      int h = hash(str);

      Node tmp = table[h];

      Node previous = table[h];

    if(tmp.next == null){

      table[h]=null;

    }else{
      while(tmp!=null) {

        if(tmp.icerik.equals(str))

          break;

        previous=tmp;

        tmp=tmp.next;

      }


      System.out.println(previous.icerik);
      System.out.println(tmp.icerik+"\n");


      if(table[h]==tmp)
        table[h]=tmp.next;
      else
        previous.next=tmp.next;

    }

    //  previous.ileri=tmp.ileri;

      return true;

    } 

    return false;

  }

  boolean find(String str) {

    int h = hash(str);

    Node tmp = table[h];

    while(tmp!=null) {

      if(tmp.icerik.equals(str)) {

        return true;

      }

      tmp = tmp.next;

    }

    return false;

  }

  void add(Node yeni) {

  //  int h= yeni.icerik%N;

    if(!find(yeni.icerik)){

      int h = hash(yeni.icerik);

      //    System.out.print(h);

          if(table[h] == null) {

            table[h] = yeni;

          }else {

            Node tmp = table[h];

            while(tmp.next!=null) {

              tmp=tmp.next;

            }

            tmp.next=yeni;

          }

    }

  }

}

class Node{

  String icerik;

  Node next;

  Node(String icerik){

    this.icerik=icerik;

  }

}
İçeriği Paylaş
Facebook
Twitter
Google+
Linkedin
Yorumlar
Biz Kimiz ?
Java, Python, C++, C#, PHP, HTML, CSS, SQL ve MATLAB programlama dillerine ait sınıf ve fonksiyonların tanım ve açıklamalarını içeren bir websitesiyiz.
Günden güne içeriklerimizi yenileyip, arttırıyoruz.