数据结构-合肥工业大学 5

合集下载

合工大考研数据结构课件(数组)

合工大考研数据结构课件(数组)
合肥工业大学 计算机与信息学院
a11 a21 a22 a31 a32 a33 … am1 am2 … amn
5
数组-三角矩阵的压缩存储
对称矩阵的求解方法同样使用于三角矩阵。
a11, a21,a22, a31,a32,a33, … …
0

m×n
am1,am2, am3,…,amn
合肥工业大学 计算机与信息学院
数据结构
Data Structure
合肥工业大学 计算机与信息学院
1
数组-定义和运算
1、定义: 数组:有限个相同类型的变量组成的序列。 若每个变量是一维数组,则为二维数组; 若每个变量是n-1维数组,则为n维数组。 2、运算: 给定一组下标,存/取数组元素的值; a11,a12,…,a1n ——计算元素的地址
合肥工业大学 计算机与信息学院
7
数组-稀疏矩阵的压缩存储
(二)稀疏矩阵的压缩存储: 数组中非零元素非常少,称为稀疏矩阵。
0 2 0 0 0 0 0 0 3 0 0 1 0 0 0 1 0 0 0 0 0 0 0 6 0 (1,4,1) (2,1,2ቤተ መጻሕፍቲ ባይዱ (2,3,1) (4,2,3) (4,5,6) (5,5,5)
a11 a21 …
am1 a21 a22 …
m×n
aij: 序号num= (j-1)*m+i
aij
地址:addr=addr0+(num-1)*c (其中c是元素的长度)
合肥工业大学 计算机与信息学院
am2 … a1n a2n … amn
4
数组-对称矩阵的压缩存储
(一)特殊矩阵的压缩存储(行优先): 1、对称矩阵 aij=aji
a11,a12,a13,…,a1n a21,a22,a23,…,a1n a31,a32,a33,…, a3n … … …

合肥工业大学数据结构试验报告

合肥工业大学数据结构试验报告

数据结构实验报告实验三栈的实验1.实验目标(1)熟练掌握栈的顺序存储结构和链式存储结构。

(2)熟练掌握栈的有关算法设计,并在顺序栈和链栈上实现。

(3)根据具体给定的需求,合理设计并实现相关结构和算法。

2.实验内容和要求(1)顺序栈结构和运算定义,算法的实现以库文件方式实现,不得在测试主程序中直接实现;(2)实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;(3)程序有适当的注释。

3.数据结构设计(1)以结构体,类为基础,和函数调用实现各实验;4.算法设计(除书上给出的基本运算(这部分不必给出设计思想),其它实验内容要给出算法设计思想)5.运行和测试(1)各个实验运行正常,符合实验要求;(2)达到实验目的。

6.总结和心得(1)通过实验,我熟练掌握了栈的顺序存储结构和链式存储结构。

(2)通过实验,熟练掌握栈的有关算法设计,并在顺序栈和链栈上实现。

(3)通过实验,我理解线性表的真实意思,能够运用一些基本的题目。

(4)通过实验,让我了解计算机的一些机制。

(5)通过实验,我学到了很多知识,在发现问题,解决问题时,我学会了怎样处理这些问题,同时也创造许多自己的思想。

[7. 附录](源代码清单。

纸质报告不做要求。

电子报告,可直接附源文件,删除编译生成的所有文件)<1>利用顺序栈实现将10进制数转换为16进制数。

第一组数据:4第二组数据:11第三组数据:254第四组数据:1357Cpp1.cpp<2>对一个合法的数学表达式来说,其中的各大小括号“{”,“}”,“[”,“]”,“(”和“)”应是相互匹配的。

设计算法对以字符串形式读入的表达式S,判断其中的各括号是否是匹配的。

Cpp1.cpp。

合肥工业大学《数据结构》课件 ch1--概论

合肥工业大学《数据结构》课件  ch1--概论
(3) 运算ቤተ መጻሕፍቲ ባይዱ
运算是指施加在数据结构上的一组操作总称, 也称为算法。
运算的定义依赖于逻辑结构,但运算的实现 必依赖于存贮结构。
每种数据结构都有插入、删除、修改、检索 等共性操作(运算);
各种结构又可能有自己特有的操作,如树结 构中找一个结点的父结点、子结点、兄弟结 点等。
1.3 算法及其描述
1.3.1 算法(algorithm)
即使2k不是正好等于n,k也接近log2n。 所以时间复杂度为:O(log2n)。
O(nlog2n)
< < < < O(n2) O(n3)
O(2n)
O(n!)
难以实际应用!
【例3】:求解以下程序段的时间复杂度: for(i=1; i<=n; i++)x=x+1;
该语句的流程图如下:
i=1;
语句执行次数 1次
N i <= n
Y x=x+1;
i++;
n+1次 n次
n次
由此可知,数量级为:lim f(n)/g(n)= lim (3n+2)/n = 3, 相应的时间复杂度为O (n)
4. 计算机语言描述
用一种计算机语言来表达算法,事实就是编写程序。 特点:准确、严格,但死板。
3. 数量级的大O记法
如果 f(n) 和 g(n) 是同一数量级的,记为 f(n)=O(g(n)),称此形式为大 O 记法。
常见时间复杂度从小到大依次为:
< < < O(1) O(log2n)
O(n)
通俗地讲,算法就是特定问题的求解方法。 更严格定义,算法是由若干条指令组成的有穷序

2022年合肥工业大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年合肥工业大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年合肥工业大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。

A.快速排序B.堆排序C.归并排序D.直接插入排序2、用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。

A.j=r[j].nextB.j=j+lC.j=j->nextD.j=r[j]->next3、若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。

A.单链表B.双向链表C.单循环链表D.顺序表4、下面关于串的叙述中,不正确的是()。

A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储5、循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。

A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front6、下列选项中,不能构成折半查找中关键字比较序列的是()。

A.500,200,450,180 B.500,450,200,180C.180,500,200,450 D.180,200,500,4507、下列叙述中,不符合m阶B树定义要求的是()。

A.根结点最多有m棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接8、一个具有1025个结点的二叉树的高h为()。

A.11B.10C.11至1025之间D.10至1024之间9、一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字。

A.107B.108C.214D.21510、分别以下列序列构造二叉排序树,与用其他三个序列所构造的结果不同的是()。

合肥工业大学数据结构与算法试验报告2

合肥工业大学数据结构与算法试验报告2

数据结构实验报告实验二单链表实验1.实验目标(1)熟练掌握线性表的链式存储结构。

(2)熟练掌握单链表的有关算法设计。

(3)根据具体问题的需要,设计出合理的表示数据的顺序结构,并设计相关算法。

2.实验内容和要求(1)本次实验中的链表结构指带头结点的单链表;(2)单链表结构和运算定义,算法的实现以库文件方式实现,不得在测试主程序中直接实现;(3)实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;(4)程序有适当的注释。

3.数据结构设计(1)以结构体,类为基础,和函数调用实现各实验;4.算法设计(除书上给出的基本运算(这部分不必给出设计思想),其它实验内容要给出算法设计思想)5.运行和测试(1)各个实验运行正常,符合实验要求;(2)达到实验目的。

6.总结和心得[7. 附录](源代码清单。

纸质报告不做要求。

电子报告,可直接附源文件,删除编译生成的所有文件)<1>尾插法创建单链表,打印创建结果。

题1.cpp<2>头插法创建单链表,打印创建结果。

题2.cpp<3>销毁单链表。

题3.cpp<4>求链表长度。

题4.cpp<5>求单链表中第i个元素(函数),若不存在,报错。

题5.cpp<6>在第i个结点前插入值为x的结点。

题6.cpp<7>链表中查找元素值为x的结点,成功返回结点指针,失败报错。

题7.cpp<8>删除单链表中第i个元素结点。

题8.cpp<9>在一个递增有序的单链表L中插入一个值为x的元素,并保持其递增有序特性。

题9.cpp<10>将单链表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),分别放入新的单链表中,然后原表和新表元素同时输出到屏幕上,以便对照求解结果。

题10.cpp<11>求两个递增有序单链表L1和L2中的公共元素,放入新的单链表L3中。

合肥工业大学数据结构试验一实验报告

合肥工业大学数据结构试验一实验报告

计算机与信息学院数据结构实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点2015 ~2016 学年第 2 学期说明实验报告是关于实验教学内容、过程及效果的记录和总结,因此,应注意以下事项和要求:1.每个实验单元在4页的篇幅内完成一份报告。

“实验单元”指按照实验指导书规定的实验内容。

若篇幅不够,可另附纸。

2、各实验的预习部分的内容是进入实验室做实验的必要条件,请按要求做好预习。

3.实验报告要求:书写工整规范,语言表达清楚,数据和程序真实。

理论联系实际,认真分析实验中出现的问题与现象,总结经验。

4.参加实验的每位同学应独立完成实验报告的撰写,其中程序或相关的设计图纸也可以采用打印等方式粘贴到报告中。

严禁抄袭或拷贝,否则,一经查实,按作弊论取,并取消理论课考试资格。

5.实验报告作为评定实验成绩的依据。

实验序号及名称:实验一单链表实验实验时间∶2016年 5 月二、实验内容与步骤(过程及数据记录):<1>求链表中第i个结点的指针(函数),若不存在,则返回NULL。

实验测试数据基本要求:第一组数据:链表长度n≥10,i分别为5,n,0,n+1,n+2第二组数据:链表长度n=0,i分别为0,2node* list::address(int i){node *p = head->next;int n = 1;while (n != i&&p != NULL){p = p->next;n++;}if (p!=NULL) return p;else return NULL;}第一组数据第二组数据<2>在第i个结点前插入值为x的结点。

实验测试数据基本要求:第一组数据:链表长度n≥10,x=100, i分别为5,n,n+1,0,1,n+2 第二组数据:链表长度n=0,x=100,i=5errorcode list::insert(const int i, const int x){node *p;p = head;int n = 1;while (n != i&&p != NULL){p = p->next;n++;}if (i<1 || i>length() + 1) return rangeerror;node *s = new node;s->data = x;s->next = p->next;p->next = s;count++;return success;}<3>删除链表中第i个元素结点。

合肥工业大学数据结构试验一实验报告

合肥工业大学数据结构试验一实验报告

计算机与信息学院数据结构实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点2015 ~2016 学年第 2 学期说明实验报告是关于实验教学内容、过程及效果的记录和总结,因此,应注意以下事项和要求:1.每个实验单元在4页的篇幅内完成一份报告。

“实验单元”指按照实验指导书规定的实验内容。

若篇幅不够,可另附纸。

2、各实验的预习部分的内容是进入实验室做实验的必要条件,请按要求做好预习。

3.实验报告要求:书写工整规范,语言表达清楚,数据和程序真实。

理论联系实际,认真分析实验中出现的问题与现象,总结经验。

4.参加实验的每位同学应独立完成实验报告的撰写,其中程序或相关的设计图纸也可以采用打印等方式粘贴到报告中。

严禁抄袭或拷贝,否则,一经查实,按作弊论取,并取消理论课考试资格。

5.实验报告作为评定实验成绩的依据。

实验序号及名称:实验一单链表实验实验时间∶ 2016年 5 月二、实验内容与步骤(过程及数据记录):<1>求链表中第i个结点的指针(函数),若不存在,则返回NULL。

实验测试数据基本要求:第一组数据:链表长度n≥10,i分别为5,n,0,n+1,n+2第二组数据:链表长度n=0,i分别为0,2node* list::address(int i){n ode *p = head->next;i nt n = 1;w hile (n != i&&p != NULL){p = p->next;n++;}i f (p!=NULL) return p;e lse return NULL;}第一组数据第二组数据<2>在第i个结点前插入值为x的结点。

实验测试数据基本要求:第一组数据:链表长度n≥10,x=100, i分别为5,n,n+1,0,1,n+2第二组数据:链表长度n=0,x=100,i=5errorcode list::insert(const int i, const int x){n ode *p;p = head;i nt n = 1;w hile (n != i&&p != NULL){p = p->next;n++;}i f (i<1 || i>length() + 1) return rangeerror;n ode *s = new node;s->data = x;s->next = p->next;p->next = s;c ount++;r eturn success;}<3>删除链表中第i个元素结点。

合肥工业大学数据结构试验一实验报告

合肥工业大学数据结构试验一实验报告

计算机与信息学院数据结构实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点2015 ~2016 学年第 2 学期说明实验报告就是关于实验教学内容、过程及效果的记录与总结,因此,应注意以下事项与要求:1.每个实验单元在4页的篇幅内完成一份报告。

“实验单元”指按照实验指导书规定的实验内容。

若篇幅不够,可另附纸。

2、各实验的预习部分的内容就是进入实验室做实验的必要条件,请按要求做好预习。

3.实验报告要求:书写工整规范,语言表达清楚,数据与程序真实。

理论联系实际,认真分析实验中出现的问题与现象,总结经验。

4.参加实验的每位同学应独立完成实验报告的撰写,其中程序或相关的设计图纸也可以采用打印等方式粘贴到报告中。

严禁抄袭或拷贝,否则,一经查实,按作弊论取,并取消理论课考试资格。

5.实验报告作为评定实验成绩的依据。

实验序号及名称:实验一单链表实验实验时间∶2016年 5 月二、实验内容与步骤(过程及数据记录):<1>求链表中第i个结点的指针(函数),若不存在,则返回NULL。

实验测试数据基本要求:第一组数据:链表长度n≥10,i分别为5,n,0,n+1,n+2第二组数据:链表长度n=0,i分别为0,2node* list::address(int i){node *p = head->next;int n = 1;while (n != i&&p != NULL){p = p->next;n++;}if (p!=NULL) return p;else return NULL;}第一组数据第二组数据<2>在第i个结点前插入值为x的结点。

实验测试数据基本要求:第一组数据:链表长度n≥10,x=100, i分别为5,n,n+1,0,1,n+2 第二组数据:链表长度n=0,x=100,i=5errorcode list::insert(const int i, const int x){node *p;p = head;int n = 1;while (n != i&&p != NULL){p = p->next;n++;}if (i<1 || i>length() + 1) return rangeerror;node *s = new node;s->data = x;s->next = p->next;p->next = s;count++;return success;}<3>删除链表中第i个元素结点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档