中南大学
《数据结构与算法》
数组与广义表学习
报告
软件系统测试报告下载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;