首页 数组和广义表学习

数组和广义表学习

举报
开通vip

数组和广义表学习中南大学 《数据结构与算法》 数组与广义表学习报告 学习报告 数组与广义表学习报告 A 数组 1学习目标: 进一步深刻的了解数组的定义与运算,对数组的顺序存储结构更深入的认知。也是对曾经学过的知识的进一步巩固。更重要的是学习特殊矩阵的压缩存储方法实现矩阵之间的加减运算,如三角矩阵,对称矩阵,以及稀疏矩阵的一些基本操作。 2学习过程: 数组是一种数据类型。从逻辑结构上看,数组可以看成是一般线性表的扩充。二维数组可以看成是线性表的线性表,应此可以利用线性表来存储多维数组。把多维数组尤其是二维数组转换为线性表尤为重要,...

数组和广义表学习
中南大学 《数据结构与算法》 数组与广义表学习 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 学习报告 数组与广义表学习报告 A 数组 1学习目标: 进一步深刻的了解数组的定义与运算,对数组的顺序存储结构更深入的认知。也是对曾经学过的知识的进一步巩固。更重要的是学习特殊矩阵的压缩存储方法实现矩阵之间的加减运算,如三角矩阵,对称矩阵,以及稀疏矩阵的一些基本操作。 2学习过程: 数组是一种数据类型。从逻辑结构上看,数组可以看成是一般线性表的扩充。二维数组可以看成是线性表的线性表,应此可以利用线性表来存储多维数组。把多维数组尤其是二维数组转换为线性表尤为重要,二维数组可以作为一个矩阵看待 我们还可以将数组Am×n看成另外一个线性表:B=(1,,2,,… ,m),其中i(1≤i ≤m)本身也是一个线性表,称为行向量,即: I= (ai1,ai2, …,aij ,…,ain)。这样把二维数组转换为了一维数组就能很轻松的进行操作与运算了。 数组的抽象数据类型定义(ADT Array) 数据对象:D={ aj1j2…jn| n>0,称为数组的维数,ji是数组的第i维下标,1≤ji≤bi,bi为数组第i维的长度, aj1j2…jn ∈ElementSet} 基本操作:包括 initArray(), destoryArray(), getElement(), setElement() 1先实现了 一位动态数组的存储 #include using namespace std; void main() { int *a ,n=10; int i; a=(int *)calloc(n,sizeof(int)); for(i=0;i #include using namespace std; int **Creat(int row,int col) { int **a,i; a=(int**)calloc(row,sizeof(int)); for(i=0;i using namespace std; void Add(int a[],int b[],int c[],int n) { int i; for(i=0;i<=n*(n+1)/2-1;i++) c[i]=a[i]+b[i]; } void Print (int a[],int n) { int i,j,k; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i>=j) k=i*(i-1)/2+j-1; else k=j*(j-1)/2+i-1; cout<>a[r]; cout<<"请输入第二个"; for(int s=0;s<6;s++) cin>>b[s]; Add(a,b,c,n); Print(c,n); cout<<"***********************************"<=j) k=j*(j-1)/2+i-1; (j using namespace std; const int MAXSIZE=999; class Matrix{ typedef struct { int i,j, e; }Triple; Triple data[MAXSIZE]; int m,n,t; public: Matrix(int row,int col,int value); print(); void transposs(Matrix &tMatrix); } void main() { cout<<"**********************************************"<>row>>col>>value; Matrix  A(row,col,value);              //创建三元组对象A cout<<"***********************************************"<>data[i].i>>data[i].j>>data[i].e; }  Matrix::print() { for(int i=1;i<=m;i++) { for(int j=1; j<=n; j++) { for(int k=1; k<=t; k++) if(i==data[k].i && j==data[k].j) { cout<t) cout<<0<<" "; } cout< 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 籍和上网搜索都得到了解决。让我更加深了对自我学习的信心与认识。 B广义表 1学习目标: 掌握广义表的类型定义广义表的存储表示和实现 2 学习过程 一般情况下,广义表写成 LS = ( a1,a2, ... , an )其中:ai 或为原子或为广义表。 在线性表的定义中,只限于是单个元素。而在广义表的定义中,可以是单个元素,也可是广义表,分别称为广义表 LS 的原子和子表。 习惯上,用大写字母表示广义表的名称,用小写字母表示原子。 广义表是递归定义的线性结构。 广义表的四个特点: 1广义表中的数据元素有相对次序 2广义表的长度为最外层包含的元素个数 3广义表的深度为所含括弧的重数 4广义表可以共享 广义表的基本操作 1 InitGList(&L); 2 DestroyGList(&L) 3 CreateGList(&L, S) 4 CopyGList(&T, L) GListLength(L); GListDepth(L); GListEmpty(L);  GetHead(L);  GetTail(L) 遍历 Traverse_GL(L, Visit()) 操作结果:遍历广义表L,用函数Visit处理每个元素 广义表的存储 结点结构: Typedef  enum  {ATOM,LIST}    Elemtag; //ATOM = = 0 ;  原子    LIST = = 1 ; 子表 Typedef  struct GLNode { Elemtag  tag;    //标志域 ;公共部分,区分原子和表结点 union {          //原子结点和表结点的联合部分 AtomType atom; //atom是原子结点的值域,AtomType由用户定义 struct  GLNode  *hp  //表结点的表头指针 }    ; struct GLNode  *tp //相当于线性链表的next,指向下一个元素 //结点; }*Glist;
本文档为【数组和广义表学习】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_686908
暂无简介~
格式:doc
大小:36KB
软件:Word
页数:0
分类:工学
上传时间:2019-09-10
浏览量:19