diff --git a/hufftree.cpp b/hufftree.cpp index 5cbb224..7eeac1c 100644 --- a/hufftree.cpp +++ b/hufftree.cpp @@ -12,7 +12,8 @@ bool HuffmanLeaf::isLeaf() void HuffmanTree::buildHuffmanTree(Source source) { - symbolList(source.getSymbolList()); + // maybe can cause problems with deletion + symbolList = source.getSymbolList(); rootNode = new HuffmanNode(); rootNode->getCodification(symbolList); @@ -20,7 +21,40 @@ void HuffmanTree::buildHuffmanTree(Source source) void HuffmanNode::getCodification(std::list symbolList) { - std::list ::iterator it1 = symbolList.begin(); - float minProb = 100.0f; + std::list ::iterator it; + std::list ::iterator minIt1 = symbolList.begin(); + float minProb = symbolList.front().getProbability(); + + for (it = symbolList.begin(); it != symbolList.end(); it++) + { + if (minProb > (*it).getProbability()) + { + minProb = (*it).getProbability(); + minIt1 = it; + } + } + + // TODO: + // extract first min symbol + Symbol *symbol1 = &(*minIt1); + // delete first min symbol from list + symbolList.erase(minIt1); + + // must try until here + + /* + minIt1 = symbolList.begin(); + minProb = symbolList.front().getProbability(); + + for (it = symbolList.begin(); it != symbolList.end(); it++) + { + if (minProb > (*it).getProbability()) + { + minProb = (*it).getProbability(); + minIt1 = it; + } + } + */ + } diff --git a/main.cpp b/main.cpp deleted file mode 100644 index dc7daa1..0000000 --- a/main.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "symbol.h" -#include "hufftree.h" - -int main(int argc, char* argv[]) -{ - return 0; -}