Skip to content

Instantly share code, notes, and snippets.

@semihozkoroglu
Created May 23, 2011 23:51
Show Gist options
  • Select an option

  • Save semihozkoroglu/987890 to your computer and use it in GitHub Desktop.

Select an option

Save semihozkoroglu/987890 to your computer and use it in GitHub Desktop.
Agac yapısı özyineli olarak kullanılarak sözlük veri yapısı tasarlanmıştır.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Agac
{
public class KelimeAgaci
{
string kelime;
KelimeAgaci[] referans = new KelimeAgaci[26];
KelimeAgaci[] bos(int index, int len, string value,int i)
{
KelimeAgaci yeni = new KelimeAgaci();
referans[index] = yeni;
if (i == len)
referans[index].kelime = value;
return referans[index].referans;
}
KelimeAgaci[] dolu(int index,int len,string value, int i)
{
if (i == len)
{
if( referans[index].kelime == null)
referans[index].kelime = value;
else
referans[index].kelime += ";" + value;
}
return referans[index].referans;
}
public void KelimeEkle(string key, string value)
{
KelimeAgaci[] tutamak = new KelimeAgaci[26];
int t, len, index, i = 0;
t = len = key.Length;
tutamak = referans;//referansi baslangica cekmek amacli.
while (t-- > 0)
{
index = (key[i++] - 'a');
if (referans[index] == null)
{
referans = bos(index, len, value, i);//Bu yapı ile özyineli olarak KelimeAgaci uzerinde gezinme elde edilmistir.
}
else
{
referans = dolu(index, len, value, i);//Bu yapı ile özyineli olarak KelimeAgaci uzerinde gezinme elde edilmistir.
}
}
referans = tutamak;//refaransi baslangica cekmek amacli.
}
public string AnlamBul(string key)
{
KelimeAgaci[] tutamak = new KelimeAgaci[26];
int t, len, index, i = 0;
string tmp;
t = len = key.Length;
tutamak = referans;//referansi baslangica cekmek amacli.
while (t-- > 0)
{
index = (key[i++] - 'a');
if (i == len)
{
if (referans[index].kelime != null)
{
tmp = referans[index].kelime;
referans = tutamak;
return tmp;
}
else
{
referans = tutamak;
return "[Bu kelime daha once silinmis]";
}
}
if (referans[index] == null)
return "[Bu kelime bulunamadi]";
referans = referans[index].referans;
}
return "[Bu kelime daha once silinmis]";
}
public void KelimeSil(string key)
{
KelimeAgaci[] tutamak = new KelimeAgaci[26];
int t, len, index, i = 0;
t = len = key.Length;
tutamak = referans;//referansi baslangica cekmek amacli.
while (t-- > 0)
{
index = (key[i++] - 'a');
if (i == len)
{
referans[index].kelime = null;
}
referans = referans[index].referans;
}
referans = tutamak;
}
}
class Program
{
static void Main(string[] args)
{
KelimeAgaci sozluk = new KelimeAgaci();
sozluk.KelimeEkle("legal", "yasal");
sozluk.KelimeEkle("leg", "bacak");
sozluk.KelimeEkle("a", "bir");
sozluk.KelimeEkle("legend", "efsane");
sozluk.KelimeEkle("leg", "dik kenar");
Console.WriteLine("leg : {0}", sozluk.AnlamBul("leg"));
Console.WriteLine("bell : {0}", sozluk.AnlamBul("bell"));
Console.WriteLine("a : {0}", sozluk.AnlamBul("a"));
Console.WriteLine("legend : {0}", sozluk.AnlamBul("legend"));
Console.WriteLine("legal : {0}", sozluk.AnlamBul("legal"));
sozluk.KelimeSil("legal");
Console.WriteLine("legal : {0}", sozluk.AnlamBul("legal"));
Console.ReadLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment