Advertisement
Cieslin

AIKD

Mar 11th, 2019
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.54 KB | None | 0 0
  1. //FETCHER.CS
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.IO;
  8.  
  9. namespace Alg_Huffmana
  10. {
  11.     class Fetcher
  12.     {
  13.         public static List<KeyValuePair<char, int>> FillDictionary(string path)
  14.         {
  15.             var charDictionary = new Dictionary<char, int>();
  16.             using (StreamReader sr = File.OpenText(path))
  17.             {
  18.                 while(!sr.EndOfStream)
  19.                 {
  20.                     var ch = (char)sr.Read();
  21.                     var item = charDictionary.Where(p => p.Key == ch);
  22.                     if (item.Count() != 0)
  23.                     {
  24.                         var itemValue = charDictionary[ch];
  25.                         charDictionary[ch] = ++itemValue;
  26.                     }
  27.                     else
  28.                     {
  29.                         charDictionary.Add(ch, 1);
  30.                     }
  31.                 }
  32.             }
  33.             var sortedList = charDictionary.ToList();
  34.             sortedList.Sort((p1, p2) => p1.Value.CompareTo(p2.Value));
  35.             SortedDictionary<char, int> sortedDictionary = new SortedDictionary<char, int>(charDictionary);
  36.             sortedDictionary.OrderBy(p => p.Value);
  37.             return sortedList;
  38.         }
  39.     }
  40. }
  41.  
  42. //Huffman.cs
  43.  
  44. using System;
  45. using System.Collections.Generic;
  46. using System.Linq;
  47. using System.Text;
  48. using NGenerics.DataStructures.Trees;
  49.  
  50. namespace Alg_Huffmana
  51. {
  52.  
  53.     public class HuffmanTree : BinaryTree<Node>
  54.     {
  55.         private KeyValuePair<int, int> root;
  56.         public void Add(int key, int value)
  57.         {
  58.             if (this.Count == 0)
  59.             {
  60.                 root = new KeyValuePair<int, int>(key, value);
  61.             }
  62.         }
  63.  
  64.         public string GetCodeFromTree(KeyValuePair<char, int> pair) //PRZESZUKIWANIE
  65.         {
  66.            
  67.         }
  68.     }
  69. }
  70.  
  71.  
  72. //Node.cs
  73.  
  74. using System;
  75. using System.Collections.Generic;
  76. using System.Linq;
  77. using System.Text;
  78.  
  79. namespace Alg_Huffmana
  80. {
  81.     public class Node
  82.     {
  83.         public int sumLeftRight { get; set; }
  84.         public KeyValuePair<char, int> pair { get; set; }
  85.  
  86.         public int Compare(object x, object y)
  87.         {
  88.             if (((Node)x).pair.Value > ((Node)y).pair.Value)
  89.             {
  90.                 return 1;
  91.             }
  92.  
  93.             if (((Node)x).pair.Value < ((Node)y).pair.Value)
  94.             {
  95.                 return -1;
  96.             }
  97.             else
  98.             {
  99.                 return 0;
  100.             }
  101.         }
  102.     }
  103. }
  104.  
  105. Nuget NGenerics BinnaryTree
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement