سورس الگوریتم فشرده سازی هافمن به زبان C

huffman algorithm in c 7782 تصویر

سورس الگوریتم فشرده سازی هافمن به زبان C

در این بخش سورس الگوریتم فشرده سازی هافمن به زبان C را برای شما آماده کرده ایم که با استفاده از نرم افزار DevC++ با زبان برنامه نویسی C نوشته شده است. در ادامه می توانید توضیحات، تصاویر و همچنین فیلمی از نحوه اجرا شدن پروژه را مشاهده کنید.

توضیحات پروژه

در این پروژه بعد از اجرا شدن برنامه، آدرس فایلی که اطلاعات در آن قرار دارد از کاربر گرفته می شود و سپس نتیجه فشرده سازی در صفحه نمایش چاپ می شود.

برای درک روش عملکرد الگوریتم هافن، فرض کنید می خواهیم تکه اطلاعات زیر را فشرده کنیم:

ACDABA

در عبارت فوق ما ۶ کاراکتر داریم که هر کاراکتر ۱ بایت حافظه می گیرد (در کل ۴۸ بیت). بر اساس الگوریتم هافمن، عبارت فوق برای پیدا شدن کاراکتری که بیشتر از همه تکرار شده است، جستجو می شود (که در عبارت فوق کاراکتر A است) و سپس یک درخت بوجود می آید که کاراکترها را با رشته بیت های کوتاه تر جایگزین می کند. در این حالت از جدول جایگزینی زیر استفاده می شود:

A=0 , B=10 , C=110 , D=111

اگر از کد فوق به منظور فشرده سازی فایل استفاده کنیم، حاصل کار به شکل زیر خواهد بود:

01101110100

که به معنی مصرف شدن ۱۱ بیت به جای ۴۸ بیت است.

قسمت های از سورس کد

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct treenode{
int data;
int num;
treenode *next;
treenode *right;
treenode *left;
}*start=NULL,*end=NULL,*p;
struct code{
char bcode[12];
int ch;
}coding[256];
struct tree{
int data;
int num;
}atree[512];
int o=0;
int search(int i);
void insert(int i);
void insertm(struct treenode *l);
void sort();
void create();
void binary(struct treenode *n,char byte[],int i);
void tree(struct treenode *n,int i);
int numnode=0;
int numchar=0;
char filename[25];
void main()
{
clrscr();
FILE *fp1;
printf("\n Enter The Location And Name Of The Source File To Compress : ");
scanf("%s",&filename);
fp1=fopen(filename,"r+b");
if (fp1==NULL)
{
printf("\n Error In Open File...");
getch();
exit(1);
}
int i=getc(fp1);
while (i!=-1)
{
numchar++;
if (search(i)==-1)
insert(i);
i=getc(fp1);
}
fclose(fp1);
sort();
create();
char byte[20]={0};
binary(start,byte,0);
tree(start,1);
getch();
}

نوشته سورس الگوریتم فشرده سازی هافمن به زبان C اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *