哈夫曼编码 编码过程c源码
已知某系统在通信联络中只可能出现八种字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.13,0.11,试设计哈夫曼编码并译码。
停车场管理系统,模拟停车场的运作
设计一个停车场管理系统,模拟停车场的运作,通过此程序具备以下功能:
1、要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理;
2、要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻;
3、该系统完成以下功能:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费);
4、要求栈以顺序结构实现,队列以链表实现。
KMP算法c语言实现
#include
#include
#include
typedef struct
{
int length;
char *p;
}sstring;
int *get_next (sstring s1)
{
int m = s1.length;
char *p=s1.p;
int j = 0;
int *x=(int *)malloc(m*sizeof(int));
x[1] = 0;
int i = 1;
printf("%4d",x[i]);
while(i<m-1)
{
if(j==0 || p[i]==p[j])
{
++i;
++j;
x[i]=j;
printf("%4d",x[i]);
}
else
j=x[j];
}
return x;
}
void kmp_matcher(sstring s,sstring s1)
{
int i = 1,j=1; /* Number of characters mached */
int n = s.length;
int m = s1.length;
int *x = get_next (s1);
while(i<=n && j<m)
{
if(j==0 || s.p[i]==s1.p[j])
{
++i;
++j;
}
else
j=x[j];
}
if(j=m)
printf("\nPattern occurs with shift:%d\n ",i-m);
}
int kmp()
{ int i;
sstring sstring[2];
char s1[20],s2[20],s[2][21];
printf("请输入主串(不超过19个):\n");
gets(s1);
printf("请输入模式串(不超过19个):\n");
gets(s2);
for(i=0;i<20;i++)
{
s[0][i+1]=s1[i];
}
for(i=0;i<20;i++)
{
s[1][i+1]=s2[i];
}
s[0][0]='f';
s[1][0]='f';
sstring[0].p=s[0];
sstring[1].p=s[1];
sstring[0].length=strlen(s[0]);
sstring[1].length=strlen(s[1]);
kmp_matcher(sstring[0],sstring[1]);
return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiweihang/archive/2009/08/23/4474864.aspx