R-Tree’ler, B-Tree’lere benzeyen fakat indeksleme ve uzaysal veri işleme için kullanılan ağaç veri yapılarıdır. 1984 yılında Antonin Guttman tarafından ortaya atılmıştır.
Şu yukardaki görseli wiki’den aldım. İki boyutlu dikdörtgenler için örnek bir R-Tree olarak açıklama yazmışlar.
Bitirme projem için araştırma yaptığım R-Tree konusunda, bu yazının üstüne birkaç yazı daha yazacağım
Veri yapıları dersinin önemli elemanlarından biri olan kuyruk (queue) yapısını Java ile oluşturmaya çalıştım. Kodlar biraz amatörce oldu ama çalışıyor :)
Peki nedir bu kuyruk? Wiki şöyle diyor
FIFO (First In Fist Out – İlk Giren İlk Çıkar) mantığına dayalı kuyruk yapısı ile ilgili yazdığım class:
public class kuyruk {
// private değişkenler
private int maxBoyut;
private long[] kuyrukDizi;
private int front;
private int rear;
private int elemanSayisi;
// constructor
// kuyruk degisken_ismi = new kuyruk (eleman_sayisi);
public kuyruk (int boyut){
maxBoyut = boyut;
kuyrukDizi = new long [maxBoyut];
front = 0;
rear = -1;
elemanSayisi = 0;
}
// metodlar
// kuyruk boş mu?
public boolean bosMu() {
if (elemanSayisi == 0) return true;
else return false;
}
// kuyruk dolu mu?
public boolean doluMu() {
if (elemanSayisi == maxBoyut) return true;
else return false;
}
// kuyruğa eleman ekleme
public void insert (long eklenecekEleman){
if (rear == maxBoyut -1) rear = -1;
rear++;
kuyrukDizi [rear] = eklenecekEleman;
elemanSayisi++;
}
// kuyruktan eleman çekme
public long remove(){
long cikarilacak = kuyrukDizi [front++];
if (front == maxBoyut) front = 0;
elemanSayisi--;
return cikarilacak;
}
// kuyruğun sonundaki eleman
public long kuyrukNerde() {
return kuyrukDizi[front];
}
// kuyruğun boyutu
public int kuyrukBoyutu() {
return elemanSayisi;
}
}
yukarıdaki gibidir.
Uzun zamandır bloğuma bir şey yazmıyordum, hazır Java çalışmaya başlamışken öğrendiklerimi ufak ufak buraya ekleyeyim, bilen için çok basit şeyler olsalar da eminim bilmeyen, google’dan buraya gelip bir şeyler öğrenen insanlar da olacaktır. Lafı fazla uzatmaya gerek yok, İlk Giren Son Çıkar (First In Last Out – FILO) mantığı ile çalışan stack (yığın) veri yapısının java kodunu en basit şekilde yazmaya çalıştım. Daha tam öğrenmediğim için erişim belirteçlerini kullanmadım, default değerler neyse öyle işleyecek artık :)
Stack veri yapısı hakkında bilgi almak için Wiki‘yi ziyaret edebilirsiniz.
Gelelim kodumuza :
class Stack
{
int stck[] = new int[20];
int p;
public Stack()
{
p= -1;
}
void push (int item)
{
if (p==9)
System.out.println("Stack dolu.");
else
stck[++p] = item;
}
int pop()
{
if(p < 0)
{
System.out.println("Stack boş");
return 0;
}
else return stck[p--];
}
}
