数结的 华中科技大学 计算机学院(5) 200c42
2001 -- 4 --2 华中科技大学 数据结构 计算机学院(5)
第五章数组和广义表 引言: 线性表:L=(a1,a2,,,an),ai是同类型的元素,1≤i≤n 数组:A=(a1,a2,,an) 若a是同类型的元素,A是一维数组,1≤i≤n 若ai是同类型的定长线性表,A是多维数组,1≤i≤n 广义表:Ls=(a1,a,,,an) ai可以是同类型的元素或不定长的线性表,1≤i≤n 5.1数组及其操作 简单地说,向量和矩阵称为数组。 5.1.1数组的递归定义 1.一维数组是一个定长线性表(a1,a2,,an) 其中:a;为元素,i为下标/序号,1≤i≤n (a1,a2,,an)又称为向量
第五章 数组和广义表 引言: 线性表:L=(a1,a2,...,an),ai是同类型的元素,1≤i≤n 数组: A=(a1,a2,...,an) 若ai是同类型的元素,A是一维数组,1≤i≤n 若ai是同类型的定长线性表,A是多维数组,1≤i≤n 广义表:Ls=(a1,a,...,an) ai可以是同类型的元素或不定长的线性表,1≤i≤n 5.1 数组及其操作 简单地说,向量和矩阵称为数组。 5.1.1 数组的递归定义 1.一维数组是一个定长线性表(a1,a2,...,an )。 其中:ai为元素,i为下标/序号,1≤i≤n (a1,a2,...,an )又称为向量
2.二维数组是一个定长线性表(1,a2, am), 其中:∝1(a1,a;2,,ain)为行向量,1≤i≤m 由m个行向量组成,记作: a11 a12 .. aIn a21a22 a2n 即An*n=((a1a12.a1n),(a21a22...an),,,(an1an2.am)) 或由n个列向量组成,记作: a 12 ain a a a n mxn an
2.二维数组是一个定长线性表(1,2,...,m), 其中: i=(ai1,ai2,...,ain)为行向量,1≤i≤m 由m个行向量组成,记作: ( a11 a12 ... a1n ) ( a21 a22 ... a2n ) ............ ( am1 am2 ... amn ) Am*n= 即 Am*n=((a11 a12 ...a1n),(a21 a22 ...a2n),...,(am1 am2 ...amn)) 或由n个列向量组成,记作: a11 a12 a1n a21 a22 a2n am1 am2 amn Amxn =
3.三维数组是一个定长线性表(β1,β2,,B) 其中:βk=(1,α2,,am)为定长二维数组,1≤k≤p 例三维数组A[1..3,1..4,1..2],p=3,m=4,n=2 a 312 a211a212 a321a322 a11la112 a221a222 a331a332 a12la122a231a32 A3*4#2 a341a342 a131a132|a241a242 a141a142 第3页 第2页 第1页 5.1.2数组的类型定义和变量说明: 例1inta[10]; //10个整数的一维数组 char b[4[5] //4行5列个字符的二维数组 float c[3][4][2]; //3米4米2个实数的三维数组
3.三维数组是一个定长线性表( 1,2,...,p )。 其中: k=( 1,2,...,m )为定长二维数组,1≤k≤p 例 三维数组A[1..3,1..4,1..2], p=3, m=4, n=2 a111 a112 a121 a122 a131 a132 a141 a142 a211 a212 a221 a222 a231 a232 a241 a242 a311 a312 a321 a322 a331 a332 a341 a342 第1页 第2页 第3页 5.1.2 数组的类型定义和变量说明: 例1 int a[10]; //10个整数的一维数组 char b[4][5]; //4行5列个字符的二维数组 float c[3][4][2]; //3*4*2个实数的三维数组 A3*4*2 =
例2# define m4 /定义符号常量m #define n 5 /定义符号常量n int alm //m个整数的一维数组 char b mlIn //m行n列个字符的二维数组 例3# define m4 /定义符号常量m # define n 5 定义符号常量n typedef int ara[m]; //一维数组类型ara typedef char arb[m][n];//二维数组类型arb ara a /ara类型的变量a arb b: /arb类型的变量b C语言中定义静态数组时,元素数目必须是常量 错例1intm=4,n=5; int am ln] //m,n是变量 错例2intp; scanf(%d, &p) int clp; //p是变量
例2 #define m 4 //定义符号常量m #define n 5 //定义符号常量n int a[m]; //m个整数的一维数组 char b[m][n]; //m行n列个字符的二维数组 例3 #define m 4 //定义符号常量m #define n 5 //定义符号常量n typedef int ara[m]; //一维数组类型ara typedef char arb[m][n]; //二维数组类型arb ara a; //ara类型的变量a arb b; //arb类型的变量b C语言中定义静态数组时,元素数目必须是常量 错例1 int m=4,n=5; int a[m][n]; //m,n是变量 错例2 int p; scanf(”%d”,&p); int c[p]; //p是变量