文档库 最新最全的文档下载
当前位置:文档库 › 实习报告七

实习报告七

班级:信息1102 姓名:贾孟涛

========实习报告七“稀疏矩阵的三元组存储”演示程序==================

(一)、程序的功能和特点

该程序可以建立稀疏矩阵的三元组存储,可以键盘输入所要存储的稀疏矩阵,能将输入的稀疏矩阵显示输出。该程序的特点是采用java面向对象语言,将三元组和稀疏矩阵用类进行封装。且能方便的储存稀疏,方便的显示稀疏矩阵。

(二)、程序的算法设计

算法一:“进栈出栈”算法:

1.【逻辑结构与存储结构设计】

逻辑结构:线性结构。

存储结构:顺序存储结构。

2.【基本操作设计】

稀疏矩阵基本算法:

建立单位子矩阵类,用来存储相应的数据。每次添加时,将会由系统编辑对应的稀疏矩阵的行数、列数然后添加非零元素数,直到将整个矩阵填满。

3.【算法设计】

文字说明:

(1).首先输出稀疏矩阵的行数和列数。

(2).在通过for循环依次访问该稀疏矩阵的每一个元素,比较行号和列号,如果行号和列号和三元组所存储的相同,则输出其值;

(3).如果不相同或三元数组没有储存则该元素值为零;

(4).输出结束。

4.【高级语言代码】

//显示输出稀疏矩阵

void display(){

int i,j,k;

System.out.println("稀疏矩阵的行数 "+Rows);

System.out.println("稀疏矩阵的列数 "+Cols);

//按先行后列顺序输出矩阵

for(i=0;i

for(j=0;j

for(k=0;k

if(i==smArray[k].row&&j==smArray[k].col){

System.out.print(" "+smArray[k].value);

break; //打断k循环

}

if(k==Terms) System.out.print("0 ");

}

System.out.println(); //换行

}

}

(三)、程序中类的设计

“Trituple”类:

1.【逻辑结构与存储结构】

逻辑结构:线性结构。

存储结构:顺序存储结构。

2.【主要成员变量说明】

public int row; //非零元素行号

public int col; //非零元素列号

public float value; //非零元素的值

3.【主要成员方法说明】

public Trituple(int r,int c,float v) //为Trituple类的构造函数。该构造函数有三个参数,分别为该非零三元组的行号列号和元素的值。

4.【高级语言代码】

class Trituple { //三元组类 Trituple

public int row; //非零元素行号/列号

public int col;

public float value; //非零元素的值

public Trituple(int r,int c,float v){

row=r;col=c;value=v;

}

}

“SparseMatrix”类:

1.【逻辑结构与存储结构】

逻辑结构:线性结构。

存储结构:顺序存储结构。

2.【主要成员变量说明】

//稀疏矩阵的行数/列数/非零元素数

int Rows,Cols,Terms;

//动态分配结构体数组(三元组表)

public Trituple smArray[];

3.【主要成员方法说明】

//稀疏矩阵的初始化

public SparseMatrix(int MaxRow,int MaxCol,int MaxTerms)

//显示输出稀疏矩阵

void display()

4.【高级语言代码】

//定义稀疏矩阵类SparseMatrix

public class SparseMatrix {

//稀疏矩阵的行数/列数/非零元素数

int Rows,Cols,Terms;

//动态分配结构体数组(三元组表)

public Trituple smArray[];

//构造函数:稀疏矩阵的行数/列数/非零元素数

public SparseMatrix(int MaxRow,int MaxCol,int MaxTerms) { //稀疏矩阵的初始化

Rows=MaxRow;

Cols=MaxCol;

Terms=MaxTerms;

smArray=new Trituple[MaxTerms]; //三元组表

int r=0,c=0;

float v=0.0f;

for(int i=0;i

System.out.println("非零元素的行号");

try { /* 键盘接受整数 */

BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));

r=Integer.parseInt(br.readLine());

} catch(IOException e){}

System.out.println("非零元素的列号");

try { /* 键盘接受整数 */

BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));

c=Integer.parseInt(br.readLine());

} catch(IOException e){}

System.out.println("非零元素的值");

try { /* 键盘接受float数 */

BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));

v=Float.parseFloat(br.readLine());

} catch(IOException e){}

Trituple tmp=new Trituple(r,c,v); //构成一行

smArray[i]=tmp; //加入表中

}

}

//显示输出稀疏矩阵

void display(){

int i,j,k;

System.out.println("稀疏矩阵的行数 "+Rows);

System.out.println("稀疏矩阵的列数 "+Cols);

//按先行后列顺序输出矩阵

for(i=0;i

for(j=0;j

for(k=0;k

if(i==smArray[k].row&&j==smArray[k].col){

System.out.print(" "+smArray[k].value);

break; //打断k循环

}

if(k==Terms) System.out.print("0 ");

}

System.out.println(); //换行

}

}

//主函数

public static void main(String args[]){

SparseMatrix s1=new SparseMatrix(5,4,6);

s1.display();

}

} //稀疏矩阵类SparseMatrix结束

(四)、程序的输入输出和运行结果截屏

运行结果如下图所示

相关文档