Created
May 23, 2011 23:51
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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