ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:19.28KB ,
资源ID:19990953      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19990953.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验报告Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验报告Word格式文档下载.docx

1、s1,int &s2) int i;i=1;while(i=k & HTi.parent!=0)i+;/下面选出权值最小的结点,用s1指向其序号s1=i;for(i=1;i=k;i+)if(HTi.parent=0&HTi.weight/下面选出权值次小的结点,用s2指向其序号i!=s1)break;s2=i;=s1&/构造Huffman树,求出n个字符的编码void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n)int m,c,f,s1,s2,i,start;char *cd;if(nweight=*w;parent=p

2、-rchild=p-lchild=0;for(;=m;+i,+p)weight=p-for(i=n+1;Select(HT,i-1,s1,s2); /选出当前权值最小的HTs1.parent=i;HTs2.parent=i;HTi.lchild=s1;HTi.rchild=s2;HTi.weight=HTs1.weight+HTs2.weight;/从叶子到根逆向求每个字符的郝夫曼编码HC=(HuffmanCode)malloc(n+1)*sizeof(char*); /分配n个字符编码的头指针变量cd=(char*)malloc(n*sizeof(char); /分配求编码的工作空间cdn-

3、1=;/编码结束符i+) /逐个字符求郝夫曼编码start=n-1; /编码结束符位置for(c=i,f=HTi.parent;f!=0;c=f,f=HTf.parent) /从叶子到根逆向求编码if(HTf.lchild=c)cd-start=0elsecd-start=1HCi=(char*)malloc(n-start)*sizeof(char); /为第i个字符编码分配空间strcpy(HCi,&cdstart);/从cd复制编码到HCfree(cd); /释放工作空间void main int n,i;int* w; /记录权值char* ch; /记录字符HuffmanTree H

4、T;HuffmanCode HC;coutn;w=(int*)malloc(n+1)*sizeof(int); /记录权值,号单元未用ch=(char*)malloc(n+1)*sizeof(char);/记录字符,号单元未用依次输入待编码的字符data及其权值weightdata数据结构实验报告2一、实验目的及要求1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。本实验训练的要点是“栈”和“队列”的观点;二、实验内容1) 利用栈,实现数制转换。2) 利用栈,实现任一个表达式中的语法检查(选做)。3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列

5、空、入队列、出队列);三、实验流程、操作步骤或核心代码、算法片段顺序栈:Status InitStack(SqStack &S)S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType);if(!S.base)return ERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;Status DestoryStack(SqStack &free(S.base);Status ClearStack(SqStack &Status StackEmpty(SqStack S)if(S.b

6、ase=S.top)int StackLength(SqStack S)return S.top-S.base;Status GetTop(SqStack S,ElemType &e)if(S.top-S.base=S.stacksize)S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType);S.base) return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;Status Push(SqSt

7、ack &S,ElemType e)Status Pop(SqStack &S,ElemType &if(S.top=S.base)e=*-S.top;Status StackTraverse(SqStack S)ElemType *p;p=(ElemType *)malloc(sizeof(ElemType);p) return ERROR;p=S.top;while(p!=S.base)/S.top上面一个.p-;printf(%d ,*p);Status Compare(SqStack &int flag,TURE=OK,FALSE=ERROR;ElemType e,x;InitStac

8、k;flag=OK;请输入要进栈或出栈的元素:);while(x= getchar)!=#flag)switch (x)case (:if(Push(S,x)=OK)括号匹配成功! break;)if(Pop(S,e)=ERROR | e!)没有满足条件 flag=FALSE;if ( Pop(S,e)=ERROR | e!if (flag & x= & StackEmpty)链队列:Status InitQueue(LinkQueue &Q)Q.front =Q.rear=(QueuePtr)malloc(sizeof(QNode);if (!Q.front) return ERROR;Q.

9、front-next = NULL;Status DestoryQueue(LinkQueue &while(Q.front)Q.rear=Q.front-next;free(Q.front);Q.front=Q.rear;Status QueueEmpty(LinkQueue &if(Q.front-next=NULL)Status QueueLength(LinkQueue Q)int i=0;QueuePtr p,q;p=Q.front;while(p-next)i+;q=p-p=q;return i;Status GetHead(LinkQueue Q,ElemType &QueueP

10、tr p;p=Q.front-p)e=p-data;return e;Status ClearQueue(LinkQueue &while(Q.front-next )Q.front=p;next=NULL;Q.rear-Status EnQueue(LinkQueue &Q,ElemType e)p=(QueuePtr)malloc(sizeof (QNode);data=e;next = p;Q.rear=p; /p-next 为空Status DeQueue(LinkQueue &Q,ElemType &if (Q.front = Q.rear)p = Q.front-e = p-nex

11、t = p-if (Q.rear = p)Q.rear = Q.front; /只有一个元素时(不存在指向尾指针)free (p);Status QueueTraverse(LinkQueue Q)if( QueueEmpty(Q)=OK)这是一个空队列!while(p)q=p;%ddata);循环队列:Status InitQueue(SqQueue &Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType);Q.base)exit(OWERFLOW);Q.front=Q.rear=0;Status EnQueue(SqQueue &Q,QEl

12、emType e)if(Q.rear+1)%MAXQSIZE=Q.front)Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAXQSIZE;Status DeQueue(SqQueue &Q,QElemType &if(Q.front=Q.rear)e=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;int QueueLength(SqQueue Q)return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;Status DestoryQueue(SqQueue &free(Q.base);Status Que

13、ueEmpty(SqQueue Q) /判空if(Q.front =Q.rear)Status QueueTraverse(SqQueue Q)while(Q.front%MAXQSIZE!=Q.rear),Q.baseQ.front);Q.front+;数据结构实验报告3数据结构与算法实验报告专业 班级 姓名 学号实验项目实验一 二叉树的应用实验目的1、进一步掌握指针变量的含义及应用。2、掌握二叉树的结构特征,以及各种存储结构的特点及使用范围。3、掌握用指针类型描述、访问和处理二叉树的运算。实验内容题目1:编写一个程序,采用一棵二叉树表示一个家谱关系。要求程序具有如下功能:(1)用括号表示法

14、输出家谱二叉树,(2)查找某人的所有儿子,(3)查找某人的所有祖先。算法设计分析(一)数据结构的定义为了能够用二叉树表示配偶、子女、兄弟三种关系,特采用以下存储关系,则能在二叉树上实现家谱的各项运算。二叉树型存储结构定义为:typedef struct SNODEchar nameMAX; /人名struct SNODE *left;/指向配偶结点struct SNODE *right; /指向兄弟或子女结点FNODE;(二)总体设计实验由主函数、家谱建立函数、家谱输出函数、儿子查找函数、祖先查找函数、结点定位函数、选择界面函数七个函数共同组成。其功能描述如下:(1)主函数:统筹调用各个函数以

15、实现相应功能(2)家谱建立函数:与用户交互建立家族成员对应关系void InitialFamily(FNODE *&head) /家谱建立函数(3)家谱输出函数:用括号表示法输出家谱输出形式为:父和母(子1和子妻1(孙1),子2和子妻2(孙2)void PrintFamily(FNODE *head) /家谱输出函数(4)儿子查找函数:在家谱中查找到某人所有的子女并输出,同时也能辨别出其是否为家族成员与是否有子女void FindSon(FNODE *b,char p) /儿子查找函数(5)祖先查找函数:在家谱中查找到某人所有的祖先并输出,同时也能辨别出其是否为家族中成员。int FindAn

16、cestor(FNODE *head,char son ) /祖先查找函数(6)结点定位函数:在家谱中找到用户输入人名所对应的结点。FNODE *findnode(FNODE *b,char p) /结点定位函数(7)选择界面函数:为便于编写程序,将用户选择部分独立为此函数。void PRINT(int &n)(三)各函数的详细设计:1:首先建立当前人的信息,将其左右结点置为空,2:然后让用户确定其是否有配偶,如果没有配偶,则当前程序结束,3:如果有则建立其配偶信息,并将配偶结点赋给当前人的左结点;4:再让用户确定其是否有子女,如果有则递归调用家谱建立函数建立子女结点,并将其赋给配偶结点的下一

17、个右结点。5:如无,则程序结束首先判断当前结点是否为空,如果为空则结束程序;如果不为空,则输出当前结点信息,然后判断其左结点(配偶结点)是否为空,如不为空则输出“和配偶信息。再判断配偶结点的右结点是否为空,如不为空则递归调用输出其子女信息,最后输出“)”;当配偶结点为空时,则判断其右结点(兄弟结点)是否为空6:如果不为空,则输出“,”,并递归调用输出兄弟信息7程序结束当前结点是否为空,为空则返回空;如果和查找信息相同,则返回当前结点;如不然,则先后递归访问其左结点,再不是则递归访问右结点在家谱中定位到要查找的结点,如无则输出“查找不到此人”判断其配偶结点与子女结点是否为空,为空则输出“无子女”不为空则输出其配偶结点的所有右结点(子女结点)。先在家谱中定位到要查找的结点,如为空输出“不存在此人”,程序结束先将父母结点入栈,当栈为空时程序结束,栈不为空时,判断栈顶元素是否已访问过,访问过,再判断是否为查找结点,如是则输出栈中保存的其祖先结点,并滤过其兄弟结点不输出;不是查找结点,则退栈一个元素未访问过,则取当前栈顶元素,置访问标志1,同时取其右结点栈不为空或当前所取结点不为空时,转到2;实验测试结果及结果分析(一)测试结果(二)结果分析(略)实验总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1