|
[x]
Posted via EE Mobile
|
||
Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again. |
||
| Question |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: |
// Proj 5 Huffman Code.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <iomanip>
#include <queue>
#define ARRAYSIZE 26
using namespace std;
struct treeNode
{
char alpha[ARRAYSIZE];
float freq;
int level;
struct treeNode *leftPtr, *rightPtr, *parent;
};
typedef struct treeNode TreeNode;
typedef TreeNode *TreeNodePtr;
TreeNodePtr rootPtr = NULL;
treeNode * node_position[ARRAYSIZE];
FILE *fp;
queue<treeNode*> q;
queue<treeNode*> huff;
void insertSymbols(); //creates leaf nodes and stores in pointer array
void sortArray(struct treeNode * node_position[]); //sort the array of node pointers
void printSortedArray(struct treeNode * node_position[]); //prints symbols and freq. read from symbol.txt file
void enQueue(struct treeNode * node_position[]); //insert nodes into queue
void createHuff();
int _tmain(int argc, _TCHAR* argv[])
{
insertSymbols();
sortArray(node_position);
printSortedArray(node_position);
//enQueue(node_position);
createHuff();
return 0;
}
void sortArray(struct treeNode * node_position[])//sort the array
{
int pass; //pass counter
int c; //comparison counter
treeNode * hold; //temp locaion to swap elements
for(pass=0; pass<ARRAYSIZE; pass++)
{
for(c=0; c<ARRAYSIZE-1; c++)
{
if(node_position[c]->freq>node_position[c+1]->freq)
{
hold=node_position[c];
node_position[c]=node_position[c+1];
node_position[c+1]=hold;
}
}
}
}
void printSortedArray(struct treeNode * node_position[])
{
int i;
for(i=0; i<ARRAYSIZE; i++)
{
cout<<"Symbol is: "<<node_position[i]->alpha<<"\t"<<"Frequency is: "<<node_position[i]->freq<<endl;
}
}
void insertSymbols()
{
int i;
fp = fopen("N:\\symbol.txt", "r");
for(i=0; i<ARRAYSIZE; i++)
{
struct treeNode * treePtr;
treePtr = (struct treeNode *) malloc (sizeof(treeNode));
fscanf(fp, "%s", &treePtr->alpha);
fscanf(fp, "%f", &treePtr->freq);
node_position[i]=treePtr;
}
}
void enQueue(struct treeNode * node_position[])
{
int i;
for(i=0; i<ARRAYSIZE; i++)
{
q.push(node_position[i]);
}
return ;
}
void createHuff()
{
treeNode *temp1, *temp2;
treeNode *treePtr;
while (!q.empty())
{
temp1=q.front();
q.pop();
temp2=q.front();
q.pop();
treePtr = (struct treeNode*) malloc (sizeof(treeNode));
if(rootPtr==NULL)
rootPtr=treePtr;
temp1->parent=treePtr;
temp2->parent=treePtr;
treePtr->leftPtr=temp1;
treePtr->rightPtr=temp2;
strcpy(treePtr->alpha, temp1->alpha);
strcat(treePtr->alpha,temp2->alpha);
treePtr->freq=temp1->freq+temp2->freq;
rootPtr=treePtr;
q.push(treePtr); /*this causes a problem*/
/*huff.push(treePtr); I can successfully push to this queue*/
}
}
|
Advertisement
| Hall of Fame |