第四章 串、矩阵和广义表
4.1串及其运算
- 串(或字符串)是由零或多个字符组成的有限序列,记为:s='a1a2...an'(n>=0)
- 在描述串时,要求串的值必须用一对单引号括起来,但单引号本身不属于串
- 模式匹配:在当前串中寻找某个子串的过程,该子串称为模式串
4.3矩阵
- 特殊矩阵:矩阵中有很多值相同的元素并且他们的分布有一定的规律
- 稀疏矩阵:矩阵中有很多零元素
- 稀疏矩阵由三元组表来表示,在第0行可以表示“总体”信息,即总行数,总列数、非零元素总个数
- 矩阵的java实现:
-
class Matrix { public double[][] datas; public int rows;//矩阵行数 public int cols;//矩阵列数 public Matrix(int r,int c) { datas = new double[r][c]; rows = r; cols = c; } public Matrix mul(Matrix m)//将当前矩阵乘以指定矩阵m { Matrix ma = new Matrix(this.rows,m.cols); if(this.cols != m.rows) { return null; } else { for(int i=0;i<this.rows;i++) { for(int j=0;j<m.cols;j++) { for(int k=0;k<this.cols;k++) { ma.datas[i][j] += this.datas[i][k]*m.datas[k][j]; } } } return ma; } } }
4.4广义表
- 广义表是一种特殊的有序序列,其数据元素可以是单个数据(单个元素,又称原子),也可以是一个广义表(子表)。当广义表非空时,第一个元素通常被称为表头(Head),其余元素组成的子表则称为表尾(Tail)。
- 广义表最外层包含元素个数称为广义表的长度
- 广义表所含括弧的重数称为广义表的深度,注意,原子的深度为0,空表的深度为1
- 广义表的名称用大写字母表示,数据元素用小写字母表示
- D=((),(e),(a,(b,c,d)))
- 广义表的特性: