第一篇:数据结构-实验报告-实验六-框架-A3版.
合 肥 学 院 学 生 实 验 报 告 专业 计算机科学与技术 姓名 学号 实验日期 2010年 4月 13实验地点 成绩 实验题目 实验六 — 程序设计题 3 问题分析 本题用栈进行运算比较简单,因此需要定义判断栈是否为空,将数据入 栈,取栈顶元素,出栈元素。概要设计 int 型数据 堆栈型指针 int 型数据用来存储数据,堆栈型指针用来指向下一个结构体;然 后 设 计 建 栈 函 数 linkstack* set(, 同 时 还 要 有 数 据 入 栈 函 数 linkstack* push(linkstack *k,int a,出栈函数,判断栈是否为空函数 int empty(linkstack *k,取栈顶函数 int gettop(linkstack *k。
通过在主函数中调用对栈操作的这些函数,完成对数据进制的转换。测试数据:将 9分别转换成 2-9等不同进制输出。详细设计
linkstack* set(//建立空堆栈 { linkstack *l;//定义堆栈类指针 l=NULL;//将指针付为空值 返回栈 l;}
linkstack* push(linkstack *k,int a//向堆 栈中插入数据 { linkstack *l;//建立栈指针
l=(linkstack*malloc(sizeof(linkstack;/申请地址 l->data=a;向栈的数据域赋值 l 的指针域指向下一个结构体 k=l;返回堆栈 k;} int empty(linkstack *k//判断堆栈是否为空 { if(k==NULL//如果堆栈为空 return 1;//返回 1 else//否则 return 0;//返回 0 } int gettop(linkstack *k//取栈顶元素 { return k->data;//返回栈顶元素
} 详细设计 … … … …
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … void main(//主函数
{ linkstack *m;//定义堆栈指针 int a,b,c;//定义整型变量 m=set(;调用建栈函数建栈 printf(“t请 输 入 要 转 换 的 数 字 :nt”;scanf(“%d”,&a;输入要转换的数 printf(“t请输入要转换成多少进制(范 围 2-9:nt”;scanf(“%d”,&c;while(a如果 a 不为 0 { b=a%c;//求余
m=push(m,b;a=a/c;
} printf(“t该数的 %d进制表示为:”,c;while(!empty(m//如果不为空 { printf(“%d ”,gettop(m;//输出栈 顶元素
m=pop(m;//栈顶元素出栈 }
printf(“nt”;} 指导教师:日期:年 月 日 合 肥 学 院 学 生 实 验 报 告
函数的返回的类型与接收函数值的变量类型不对,不能正常编译。程序结果如下图所示:
该软件按为在 dos 下运行的软件,第一步提示用户输入要转换的数据;输入数据后,会提示输入要转换成多少进制的数;然后就会输出结果。
教师签字: 日期: 年 月 日
测试结果 调试分析 操作说明
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … …
第二篇:数据结构实验六报告
实验六报告
课程名称: 数据结构 实验名称:二叉树的应用
实验日期
2011/11/23
一、实验目的:
掌握赫夫曼二叉树的建立及赫夫曼编码的生成。
二、实验内容与要求:
根据给定的n个权值生成赫夫曼二叉树,输出赫夫曼编码。
三、数据结构设计
顺序表的存储结构,建立了二叉树的关系
Struct HTNode{
int weight;
unsigned int parent,lchild,rchild;};
四、算法设计
1、从数据中选择较小的两个数据元素
void Select(HTNode *HT, const int n, int &a, int &b){ //选择较小的两个元素
} int x,y;
x=y=0x7fff;for(int j=0;j if(HT[j].parent==0) if(HT[j].weight 2、建立赫夫曼树 void CreatHuff(HTNode *HT,int *p,const int n){ } int m=2*n-1;int i,a,b;for(i=0;i Select(HT ,i,a,b);HT[a].parent=HT[b].parent=i;HT[i].weight=HT[a].weight+HT[b].weight;HT[i].lchild=a;HT[i].rchild=b;} 3、生成赫夫曼编码 void HuffCoding(HTNode *HT, Huffcode &HC, const int n){ // }HC=new char*[n+1]; char *code=new char[n];code[n-1]=' ';int i,j,p,k;for(i=0;i } delete[] code;j=n-1;k=i;while(HT[k].parent){ p=HT[k].parent;if(HT[p].lchild==k)code[--j]='0';else code[--j]='1';k=p;} HC[i]=(char*)malloc((n-j)*sizeof(char));HC[i]=new char[n-j];strcpy(HC[i],&code[j]); 五、测试结果 测试数据一: 测试数据二: 六、心得体会 这次实验是在前面的实验基础之上,加上只用了顺序表的存储结构,所以比较简单。尽管实验内容少,但还是学到一些知识。首先学会了赫夫曼编码的简单实现,认识到其应用的实际价值。然后,学会了用指针数组,前面几次试验有过尝试,但没写成。这次实验最初也是用C++写的,但错误“无法解析的外部符号“public: void __thiscall HuffmanTree::HuffCoding(struct HTNode *,char * * &,int)”(?HuffCoding@HuffmanTree@@QAEXPAUHTNode@@AAPAPADH@Z),该符号在函数_main 中被引用”改不过来,所以迫于无奈,只得稍微改成像C的代码。 “计算机软件技术基础”课程实验报告 (六)实验名称:数据库及SQL语言 班级_______ 姓名__________ 学号______实验日期: 实验机时:3 学时实验成绩: ----------------- 一.实验目的: 1、学习数据库设计的一般过程及相关技术; 2、学习access数据库管理系统; 3、掌握数据库的输入、查询、更新操作。 二.实验内容: 1、需求陈述:某校图书馆要建立一个图书数据管理系统。该图书馆的图书(书名、分类号、作者、出版社)存放在不同的借阅室(室名),读者(姓名、系名、类别)在书架上找到所需图书后,可以到服务台办理借阅(借阅时间)。 设计要求: 分析需求,建立数据库的概念模型; 将概念模型转换为关系模型(注意:是否需要作规范化处理); 写出创建基本表的SQL语句; 写出以下查询要求的SQL语句: (1)所有“高等数学习题集”书的信息; (2)读者“李林”借了什么书? (3)“社会学原理”在哪个借阅室? 2、在access数据库管理系统中建立所设计的关系表; 3、向各表中输入一组实验数据(元组)(注意:关系完整性); 4、对数据库进行查询。 三.实验结果: 1、实体-关系图; 2、数据库表; 3、创建基本表的语句; 4、查询语句。 注意:实验结束后提交一份实验报告电子文档 电子文档命名为“学号+姓名”,如:E01214058宋思怡 《数据结构》实验报告 (一)学号:姓名:专业年级: 实验名称:线性表 实验日期:2014年4月14日 实验目的: 1、熟悉线性表的定义及其顺序和链式存储结构; 2、熟练掌握线性表在顺序存储结构上实现基本操作的方法; 3、熟练掌握在各种链表结构中实现线性表基本操作的方法; 4、掌握用 C/C++语言调试程序的基本方法。 实验内容: 一、编写程序实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能: (1)初始化顺序表L; (2)依次在L尾部插入元素-1,21,13,24,8; (3)输出顺序表L; (4)输出顺序表L长度; (5)判断顺序表L是否为空; (6)输出顺序表L的第3个元素; (7)输出元素24的位置; (8)在L的第4个元素前插入元素0; (9)输出顺序表L; (10)删除L的第5个元素; (11)输出顺序表L。 源代码 调试分析(给出运行结果界面) 二、编写程序实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能: „„„„ „„„„ 小结或讨论: (1)实验中遇到的问题和解决方法 (2)实验中没有解决的问题 (3)体会和提高 南京信息工程大学实验(实习)报告 实验(实习)名称数据结构实验(实习)日期 2011-11-2得分指导教师周素萍 系公共管理系专业信息管理与信息系统年级10级班次1姓名常玲学号2010230700 3实验一顺序表的基本操作及C语言实现 【实验目的】 1、顺序表的基本操作及 C 语言实现 【实验要求】 1、用 C 语言建立自己的线性表结构的程序库,实现顺序表的基本操作。 2、对线性表表示的集合,集合数据由用户从键盘输入(数据类型为整型),建立相应的顺序表,且使得数据按从小到大的顺序存放,将两个集合的并的结果存储在一个新的线性表集合中,并输出。 【实验内容】 1、根据教材定义的顺序表机构,用 C 语言实现顺序表结构的创建、插入、删除、查找等操作; 2、利用上述顺序表操作实现如下程序:建立两个顺序表表示的集合(集合中无重 复的元素),并求这样的两个集合的并。 【实验结果】 [实验数据、结果、遇到的问题及解决] 一. Status InsertOrderList(SqList &va,ElemType x) { } 二. Status DeleteK(SqList &a,int i,int k) {//在非递减的顺序表va中插入元素x并使其仍成为顺序表的算法 int i;if(va.length==va.listsize)return(OVERFLOW);for(i=va.length;i>0,x } //注意i的编号从0开始 int j;if(i<0||i>a.length-1||k<0||k>a.length-i)return INFEASIBLE;for(j=0;j<=k;j++)a.elem[j+i]=a.elem[j+i+k];a.length=a.length-k;return OK; 三.// 将合并逆置后的结果放在C表中,并删除B表 Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C) { LinkList pa,pb,qa,qb;pa=A;pb=B;qa=pa;qb=pb;// 保存pa的前驱指针 // 保存pb的前驱指针 pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){} while(pa){} qa=pa;pa=pa->next;qa->next=A->next;A->next=qa;if(pa->data data){} else{} qb=pb;pb=pb->next;qb->next=A->next;//将当前最小结点插入A表表头 A->next=qb;qa=pa;pa=pa->next;qa->next=A->next;//将当前最小结点插入A表表头 A->next=qa; } } pb=B;free(pb);return OK;qb=pb;pb=pb->next;qb->next=A->next;A->next=qb; 顺序表就是把线性表的元素存储在数组中,元素之间的关系直接通过相邻元素的位置来表达。 优点:简单,数据元素的提取速度快; 缺点:(1)静态存储,无法预知问题规模的大小,可能空间不足,或浪费存储空间;(2)插入元素和删除元素时间复杂度高——O(n) 求两个集合的并集 该算法是求两个集合s1和s2的并集,并将结果存入s引用参数所表示的集合中带回。首先把s1集合复制到s中,然后把s2中的每个元素依次插入到集合s中,当然重复的元素不应该被插入,最后在s中就得到了s1和s2的并集,也就是在s所对应的实际参数集合中得到并集。第三篇:《数据结构》上机作业——实验报告(六)
第四篇:数据结构实验报告
第五篇:数据结构实验报告