数据结构实践项目——数组和广义表
来源:互联网 发布:软件设计方案模板 编辑:程序博客网 时间:2024/06/05 16:14
本文针对 [数据结构基础系列网络课程(5):数组和广义表]
1. 数组的基本概念与存储结构
2. 特殊矩阵的压缩存储
3. 稀疏矩阵的三元组表示
4. 稀疏矩阵的十字链表表示
5. 广义表
6. 广义表的存储结构及基本运算的实现
【项目1 - 猴子选大王(数组版)】
一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王。输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。
要求采用数组作为存储结构完成。
[参考解答]
【项目2 - 对称矩阵压缩存储的实现与应用】
(1)用压缩形式存储对称矩阵,实现下面的操作并测试
void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组Bint Value(int b[], int i, int j);//返回存储在b[M]中,对应二维数组A[i][j]的值void Assign(int b[], int e, int i, int j);//将e赋值给对应二维数组元素A[i][j],要存储到B[M]中void Disp(int b[]);//输出压缩存储在b中的对称矩阵void Destroy(int b[]);//销毁存储空间
[参考解答]
(2)设计算法,实现两个用压缩形式存储的对称矩阵A和B的加法和乘法。实现中请使用好前面设计的基本运算。
[参考解答]
(3)延伸:写出对上、下三角矩阵、对角矩阵的压缩存储结构,以及相关的基本运算的实现
[参考解答(略)]
【项目3-稀疏矩阵的三元组表示的实现及应用】
(1)建立稀疏矩阵三元组表示的算法库,包括:
① 头文tup.h,定义数据类型,声明函数;
② 源文件tup.cpp,实现稀疏矩阵三元组表示的基本运算,主要算法包括:
void CreatMat(TSMatrix &t,ElemType A[M][N]); //从一个二维稀疏矩阵创建其三元组表示bool Value(TSMatrix &t,ElemType x,int i,int j); //三元组元素赋值bool Assign(TSMatrix t,ElemType &x,int i,int j); //将指定位置的元素值赋给变量void DispMat(TSMatrix t); //输出三元组void TranTat(TSMatrix t,TSMatrix &tb);//矩阵转置
③ 设计main函数,测试上面实现的算法
[参考解答]
(2)采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法
提示1:两个行数、列数相同的矩阵可以相加
提示2:充分利用已经建立好的算法库解决问题
提示3:教材例6.3已经给出两个稀疏矩阵相加的运算的算法,但未利用基本运算。请比较这两种方案
[参考解答]
【项目4-广义表算法库及应用】
(1)建立广义表算法库,包括:
① 头文glist.h,定义数据类型,声明函数;
② 源文件glist.cpp,实现广义表的基本运算,主要算法包括:
int GLLength(GLNode *g); //求广义表g的长度int GLDepth(GLNode *g); //求广义表g的深度GLNode *CreateGL(char *&s); //返回由括号表示法表示s的广义表链式存储结构void DispGL(GLNode *g); //输出广义表g
③ 设计main函数,测试上面实现的算法
[参考解答]
(2)设计一个算法,求出给定广义表g中的原子个数
(3)设计一个算法,求出给定广义表g中的最大原子
[参考解答]
- 数据结构实践项目——数组和广义表
- 第九周 数据结构实践项目——数组和广义表【项目3.2-- 稀疏矩阵相加】
- 第九周 数据结构实践项目——数组和广义表【项目3.1-稀疏矩阵的三元组表示的实现及应用】
- 数据结构——数组和广义表习题收集
- 数组和广义表 - [数据结构]
- 数据结构,数组和广义表
- [数据结构]数组和广义表
- 【数据结构】数组和广义表
- 数据结构实践——广义表的原子统计
- 数据结构实践——广义表算法库及应用
- 数据结构之【数组和广义表】复习题
- 数据结构第五章--数组和广义表
- 数据结构之数组和广义表
- 数据结构学习-数组和广义表
- 数据结构(五) 数组和广义表
- 数据结构05数组和广义表
- 数据结构 第五章 数组和广义表
- 数据结构之数组和广义表
- 内存字节对齐
- HTML学习3:常用标签之文本标签
- Deep Learning学习
- UGUI 里特效的层级
- HP UFT简介
- 数据结构实践项目——数组和广义表
- 邮件发送的原理
- java内存管理
- 使用Teamcity自构建之-自动运行单元测试
- 第十三篇:cxcore100.dll cv100.dll highgui100.dll libguide40.dll 的驱动安装
- java 变量命名规则
- C语言总结错误
- NYOJ6 之喷水装置(一)
- Leetcode260 Single Number III