Προς το περιεχόμενο

huffman σε C


takis_tz

Προτεινόμενες αναρτήσεις

ΚΑΛΗΣΠΕΡΑ ΚΑΙ ΚΑΛΗ ΧΡΟΝΙΑ ΣΕ ΟΛΟΥΣ ΣΑΣ.

 

ΕΧΩ ΚΑΙ ΕΓΩ ΤΙ ΙΔΙΑ ΑΣΚΗΣΗ ΚΑΙ ΑΝΤΙΜΕΤΩΠΙΖΩ ΕΝΑ ΠΡΟΒΛΗΜΑ ΚΑΤΑ ΤΙ ΔΗΜΙΟΥΡΓΙΑ ΤΟΥ ΔΕΝΔΡΟΥ HUFFMAN.ΕΧΩ ΚΑΝΕΙ ΤΟ ΠΙΟ ΚΑΤΩ ΚΩΔΙΚΑ.ΔΕΝ ΕΙΝΑΙ ΟΜΩΣ ΚΑΙ ΤΟΣΟ ΚΑΛΟΣ ΚΑΙ ΘΑ ΗΘΕΛΑ ΤΗΝ ΒΟΗΘΕΙΑ ΣΑΣ.ΤΟ ΔΕΝΤΡΟ ΠΟΥ ΘΕΛΩ ΝΑ ΔΗΜΙΟΥΡΓΗΣΩ ΘΕΛΩ ΝΑ ΕΙΝΑΙ ΜΕ ΒΑΣΗ ΤΟ probfile.txt ΠΟΥ ΣΑΣ ΠΑΡΑΘΕΤΩ ΠΙΟ ΚΑΤΩ.

typedef struct _treenode treenode;

 

struct _treenode{

int freq; /* frequency is the priority for heap */

unsigned char ch; /* character,if any */

treenode *left; /* left child of huffman tree */

treenode *right; /* right child of huffman tree */

};

 

/* this is a priority queue implemented as a binary heap */

typedef struct _pq{

int heap_size;

treenode *A[TABLE_SIZE];

}PQ;

 

/* create an empty queue */

 

void create_pq(PQ *p){

p->heap_size=0;

};

 

/* this heap node's parent */

 

int parent(int i){

return (i-1)/2;

}

 

/* this heap node's left kid */

 

int letf(int i){

return i*2+1;

}

 

/* this heap node's right kid */

 

int right(int i){

return i*2+2;

}

 

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΕΚ ΤΩΝ ΠΡΟΤΕΡΩΝ!!

 

Aυτό που έχεις κάνει είναι να αντιγράψεις ένα κώδικα που έχει δημοσιευτεί και πριν μία ή δύο σελίδες στο ίδιο thread και να αλλάξεις μερικά ονόματα μεταβλητών, μην τρελαθούμε και όλας, εντάξει να μην παρατραβάει το δούλεμα...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 37
  • Δημ.
  • Τελ. απάντηση
Αυτό τι είναι, δεν το έχω ξαναδεί στην ANCI C ;

 

Αν και δεν εχει ιδιαίτερη σημασία το t δηλώνει κατηγορηματικά το άνοιγμα αρχείων κεμένου και μόνο, αν θέλεις το βάζεις αν δεν θέλεις μην το βάζεις, εγώ το βάζω έτσι από άποψη.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν και δεν εχει ιδιαίτερη σημασία το t δηλώνει κατηγορηματικά το άνοιγμα αρχείων κεμένου και μόνο, αν θέλεις το βάζεις αν δεν θέλεις μην το βάζεις, εγώ το βάζω έτσι από άποψη.

Υποθέτω οτι η χρήση του δεν δημιουργεί πρόβλημα σε άλλους compilers. ε;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

/* Global Structures. */

 

/* Our Huffman Node Structure. */

typedef struct _Huffnode{

int Freq;

unsigned char symbol;

}Huffnode;

 

/* Binary Tree Node Structure. */

typedef struct _BiTreeNode{

Huffnode data;

struct _BiTreeNode *left;

struct _BiTreeNode *right;

}BiTreeNode;

 

/* The Binary Tree. */

typedef struct _BTree{

/* Tree's size. */

int size;

/* Here is the root. */

BiTreeNode *root;

}BTree;

 

 

/* Functions for Binary Trees. */

 

/* Create Tree. */

BTree *CreateBT()

{

BTree *t = malloc(sizeof(BTree));

if(!t)

{

printf("ErrorReporter:Error Can not get Memory for Building our Tree.\n");

return NULL;

}

else

{

/* The Tree is Empty. */

t->size = 0;

t->root = NULL;

/* Return the Tree. */

return t;

}

}

 

/* Insert into Tree. */

int InsertLeftTree(BTree *t, BiTreeNode *node, Huffnode data)

{

BiTreeNode *newNode = NULL;

BiTreeNode **position = NULL;

/* Create a new Node. */

newNode = malloc(sizeof(BiTreeNode));

if(!newNode)

return NULL;

else

{

newNode->data = data;

newNode->left = NULL;

newNode->right = NULL;

}

if(node == NULL)

{

if(t->size > 0)

return -1;

position = &t->root;

}

else

{

if(node->left != NULL)

return -2;

position = &node->left;

}

/* Get value for the double pointer. */

*position = newNode;

t->size++;

return 0;

}

 

/* Insert Right. */

int InsertRightTree(BTree *t, BiTreeNode *node, Huffnode data)

{

BiTreeNode *newNode = NULL;

BiTreeNode **position = NULL;

/* Create a new Node. */

newNode = malloc(sizeof(BiTreeNode));

if(!newNode)

return NULL;

else

{

newNode->data = data;

newNode->left = NULL;

newNode->right = NULL;

}

if(node == NULL)

{

if(t->size > 0)

return -1;

position = &t->root;

}

else

{

if(node->right != NULL)

return -2;

position = &node->right;

}

/* Get value for the double pointer. */

*position = newNode;

t->size++;

return 0;

}

 

/* Print Tree. */

/* Traversal means that we visit first the root then left then right. */

void DumpTreeTraversal(BiTreeNode *r)

{

if(r != NULL)

{

DumpTreeTraversal(r->left);

printf("%d %c\n", r->data.Freq, r->data.symbol);

DumpTreeTraversal(r->right);

}

}

ΑΝ ΕΙΝΑΙ ΓΙ'ΑΥΤΟ ΤΟ ΚΩΔΙΚΑ ΠΟΥ ΛΕΣ ΔΕΝ ΔΟΥΛΕΥΕΙ.ΕΧΩ ΑΛΛΑΞΕΙ ΣΧΕΔΟΝ ΤΑ ΠΑΝΤΑ ΚΑΙ ΔΕΝ ΔΟΥΛΕΥΕΙ ΠΑΛΙ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ε εσύ παιδί μου έχεις και θράσσος, αν δεν δουλεύει ο κώδικας μου μην τον χρησιμοποιείς στο φινάλε, εγώ δεν μιλούσα βέβαια για τον κώδικα μου αλλά για έναν άλλο που τον έχει πάρει κάποιος από κάποιον και ούτε και εγώ δεν ξέρω που τελειώνει αυτή η ιστορία. Μην περιμένεις να τα πάρεις έτοιμα από εδώ, αν δεν δουλεύει ο κώδικας μου όπως λες γιατί δεν κοιτάζεις να δεις που είναι το πρόβλημα με ένα debugger; Λέμε τώρα..

Στο φινάλε αν δεν σου αρέσουν αυτά που βρίσκεις σε αυτό το φόρουμ, άντε σε κάνα άλλο από αυτά που ξέρεις και πόσταρε την άσκηση σου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ε εσύ παιδί μου έχεις και θράσσος, αν δεν δουλεύει ο κώδικας μου μην τον χρησιμοποιείς στο φινάλε, εγώ δεν μιλούσα βέβαια για τον κώδικα μου αλλά για έναν άλλο που τον έχει πάρει κάποιος από κάποιον και ούτε και εγώ δεν ξέρω που τελειώνει αυτή η ιστορία. Μην περιμένεις να τα πάρεις έτοιμα από εδώ, αν δεν δουλεύει ο κώδικας μου όπως λες γιατί δεν κοιτάζεις να δεις που είναι το πρόβλημα με ένα debugger; Λέμε τώρα..

Στο φινάλε αν δεν σου αρέσουν αυτά που βρίσκεις σε αυτό το φόρουμ, άντε σε κάνα άλλο από αυτά που ξέρεις και πόσταρε την άσκηση σου.

 

Απορώ με τον εαυτό μου μερικές φορές γιατί κάθομαι και απαντάω!!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μήπως καταλήξατε σε κάποιον κώδικα που να δίνει αποτελέσματα γιατί αυτοί οι κώδικές δεν τρέχουν.

Η προθεσμία υποβολής έφθασε και !!!! ΣΟΣ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...