数据结构实验指导书06(5)

2019-01-18 22:00

while(!fopen(fp)) {

cjs=0; //一个字符的编码是否读结束 for(i=0;i

cd[i]=’ ’;

cd[i+1]=’\\0’; //初始化cd串 cd[i]=fgetc(fp); for(j=1;j<=num;j++)

if(strcmp(HC[j].bits,cd)==0)

{

str[k]=HC[j].ch; k++; cjs=1; break; } } } str[k]=’\\0’; p=str; return p;

}

主程序存放在(实验6_2_1.c) #include #include

#include “shiyan6_2_1.h” #include “shiyan 6_2_2.h” void main() {

char st[254],*s,str[27]; int cn[27];

HuffmanTree HT; HuffmanCode HC

printf(“输入电文(均为大写字母):\\n”); gets(st);

num=jsp(st,cn,str);

21

ChuffmanTree(HT,HC,cn,str); HuffmanEncoding(HT,hc); coding(HC,st); s=decode(HC);

printf(“译码后的字符串:\\n”); printf(“%s\\n”,s); }

6.5思考题:

(1)若以中序序列该如何建立一棵二叉树?(实验1)

(2)如何实现二叉树中序遍历的非递归形式? (实验2) 中序遍历非递归算法之一

Status InOrderTraverse(BiTree T, Status (* Visit)(TElemType e)) { InitStack(S);

Push(S,T); //根指针进栈 While (!StackEmpty(S)) {

While (GetTop(S,p) && p) Push(S,p->lchild); //向左走到尽头 Pop(S,p); //空指针退栈

If (!StackEmpty(S)) { //访问结点,向右一步 Pop(S,p);

If (!Visit(p->data)) return ERROR; Push(S,p->rchild); }//if }//while return OK;

}//InOrderTraverse 中序遍历非递归算法之二

Status InOrderTraverse(BiTree T, Status (* Visit)(TElemType e)) { //采用二叉链表存储结构,Visit是对数据元素操作的应用函数。

//中序遍历二叉树T的非递归算法,对每个数据元素调用函数Visit。 InitStack(S); p=T;

While (p‖!StackEmpty(S))

{if (p) {Push(S,p); p=p->lchild;} //根指针进栈,遍历左子树 else { //根指针退栈,访问根结点,遍历右子树 Pop(S,p);

if (!Visit(p->data)) return ERROR; p=p->rchild}; }//else }//while return OK;

}//InOrderTraverse

(3)如何统计一棵二叉树的结点的个数?(实验3)

22

(4)如何求一棵二叉树的宽度?(实验4)

(5)在主程序中编写一个简单的菜单,将上述实验整合成一个实验,通过键盘读入数字选择完成不同的内容。(实验5)

(6)考虑不采用递归算法如何进行二叉树的线索化。(实验6)

23


数据结构实验指导书06(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:物质在水中溶解说课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: