数据结构伪代码转化成为可执行源代码
文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]
数据结构伪代码转化为源代码尊重原作者的劳动,我只是个学习者,见此文章,感觉很有用,愿与大家一起分
享
-----百度文库:桔紫蓝
*/ --------------------------------------------------------------------------------------
*/ 出自:编程中国
*/ 时间: 2007-10-26编程论坛首发
*/ 声明:尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
前言:这些是前几年我在大专教书时,数据结构课程中给学生写的学习例程,对于初学者有一定帮助。
在此收集到一起,当个共享贴贡献给广大网友和编程爱好者。
一般程序都不难也不大,并且所有例程均有较详细注释,适合自学。
中间有一个“哈夫曼编码”,程序较大,希望能给大家一点启示。
以下所有程序均在VC++开发环境中调试通过,运行正常。
有任何疑问可以“另外”发贴讨论。
更多内容请访问我的博客。
自认为本贴内容充实,对网友会所很大帮助,请版主或者管理员置顶加精,谢谢。
数据结构与算法基本程序目录
一、线性表及其操作
1、尾插法建立一个单链表,并按顺序输出
2、单链表的元素查找,按内容查找
3、元素插入操作
4、按内容元素删除操作
5、按位置删除元素
6、建立双向链表
7、单链表就地逆置
8、约瑟夫环问题
二、栈及其操作
1、建立堆栈
2、进栈与出栈
3、栈的应用,括号匹配
三、队及其操作
1、链队列的建立
2、入队和出队
3、循环队列建立
4、循环队列的入队和出队操作
四、串及其操作
1、串的朴素匹配
五、树(二叉树)及其操作
1、二叉排序树
2、哈夫曼编码
六、排序
1、冒泡排序
2、直接选择排序法
一、线性表及其操作
.\n\n");
while(pow(2,n)<char_num)//计算等长编码情况下需要的编码位数
n++;
printf("等长码需要 %d 位,编码总长 %d 位,本次哈夫曼编码总长 %d , 压缩比 %g\n",n,n*char_a mount,code_sum,(float)code_sum/(n*char_amount));
}
main()
{
int choice;
//初始化,操作包括建立空链表和键盘输入字符串
initial();
//将接收的字符串依次读入链表中,并统计出现的次数
pull_in_list();
//建立最优二叉树
root=create();
//交互式显示哈夫曼树
if(root!=NULL)
{
printf("\n哈夫曼树构造完成,是否查看哈夫曼树,输入1查看,其它输入跳过");
scanf("%d",&choice);
getchar();
if(choice==1)
describe_tree();
}
else
{
printf("哈夫曼树未建立,查看字符串中是否只含一种字符,或者重试\n");
exit();
}
//要挟据建立的最优二叉树进行编码
encoding();
//将原始字符串的哈夫曼编码串输出
codeoutput();
//编码性能分析
analyze();
printf("\n\n\t\t\tAll Copyright Are Presevered By cobby\n\n输入任何键退出\n"); scanf("%d",&choice);
}
六、排序
/* 冒泡排序 */
#include<>
#include<>
main()
{
int i,j,temp,a[30000];
long TIME=0;
rand();
for(i=0;i<30000;i++) {
a[i]=rand();
printf("%d\t",a[i]); }
for(i=29999;i>=0;i--) for(j=0;j<=i;j++)
if(a[j+1]<a[j])
{
TIME++;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
for(i=0;i<=29999;i++) printf("%d\t",a[i]); printf("\n%d\n",TIME); }
/*直接选择排序法 */
#include<>
#include<>
#include<>
//#include<>
main()
{
int i,j,value,pos,temp,a[30000];
long TIME=0;
rand();
for(i=0;i<30000;i++) /* make up the rand numbers*/ {
a[i]=rand();
printf("%d\t",a[i]);
}
for(i=0;i<30000;i++)/* sort */
{
value=a[i];
pos=i;
for(j=i+1;j<30000;j++)
{
TIME++;
if(value>a[j])
{
value=a[j];
pos=j;
}
}
temp=a[i];
a[i]=a[pos];
a[pos]=temp;
}
for(i=0;i<30000;i++) printf("%d\t",a[i]); printf("\n\n%ld\n",TIME); }。