【数据结构】——串,数组,矩阵的相关习题

目录

    • 题型一(二维数组的存储地址)
    • 题型二(串的模式匹配)
    • 题型三(串的基本操作)
    • 题型四(特殊矩阵的压缩存储)

题型一(二维数组的存储地址)

1、二维数组A[m][n]采用行序为主方式存储,每个元素占l个存储单位。元素A[0][0]的存储地址是b,则元素A[i][j](0 ≤ i ≤ m-1,0 ≤ j ≤ n-1)的存储地址是()。
A、b+(i×n+j)× l
B、b+i×j+l
C、b+(i+j)× l
D、b+((i-1)×n+(j-1))× l

解析:(A)
A[i][j]前面有i行元素,每行元素有n个,A[i][j]为本行第j+1个元素,有j个元素位于其前,共有i×n+j个元素,每个元素占l个存储单位,即(i×n+j)× l,再加上元素A[0][0]的存储地址,所以元素A[i][j]=b+(i×n+j)× l。

2、若二维数组A[0…m-1][0…n-1]按行优先顺序存储,每个元素aij占d个字节,LOC(a00)是整个数组的起始地址,则aij地址为()。
A、LOC(a00)+(( i-1)×n+j-1)× d
B、LOC(a00)+( i×n+j )× d
C、LOC(a00)+(( j-1 )×n+i-1)× d
D、LOC(a00)+( j×n+i-1)× d

解析:(B)

3、若二维数组A[0…m-1][0…n-1]按列优先顺序存储,LOC(a00)是整个数组的起始地址,则aij地址为()。
A、LOC(a00)+j×m+i
B、LOC(a00)+j×n+1
C、LOC(a00)+(j-1)×n+i-1
D、LOC(a00)+(j-1)×n+j-1

解析:(A)

题型二(串的模式匹配)

1、设有两个串S1和S2,求S2在S1中首次出现的位置的运算称为()。
A、求子串
B、判断是否相等
C、模式匹配
D、连接

解析:(C)
求子串的操作是从串S的第某位起,length为相关长度的子串S1,也就是截取串S的部分,通过循环依次将串S的相应内容赋值给新串(子串)中 ;

比较两个串S1和串S2是否相等,两个串相等的条件是两个串的长度相等且对应位置的字符也都相同;

串的模式匹配也称为串的定位,搜索串中的子串,若存在则返回子串在串S中第一次出现的位置,否则直到i、j指向两个串尾时结束循环,对应位置的相应字符相同则继续比较,若不相同则进行下一次字符进行比较(若第一个字符不相同,即i=i-j+1=1,j=0,开始将串S的第二个字符与串S1的第一个字符进行比较);

连接子串,也就是将第二个串S2连接到第一个串S1的后,最后形成一个新串S,首先要判断连接成功后的总长度是否预定的存储空间长度,若成功则形成串S,修改串S1的长度并设字符串结束标志,另外,若连接后的串S大于预定的存储空间长度,则多余的部分字符序列将会被舍弃。

2、设主串的长度为n,子串的长度为m,则简单的模式匹配算法的时间复杂度为(),KMP算法的时间复杂度为()。
A、O(m)
B、O(n)
C、O(mn)
D、O(m+n)

解析:(C、D)
简单的模式匹配算法的时间复杂度为O(mn),而KMP算法中由于在匹配过程中,主串始终没有回退,从而提高了匹配效率,即O(m+n)

题型三(串的基本操作)

1、设串s1=“ABCDEFG”,s2=“12345”,则strconcat(strsub(s1,2,strlen(s2)),strsub(s1,strlen(s2),2))的结果串是()。
A、BCDEF
B、BCDEFG
C、EFG
D、BCDEFEF

解析:(D)
由内向外依次求串,首先strlen(s2)对应的操作是求当前串的串长,它返回串的元素个数,所以strlen(s2)=5;strsub(s1,strlen(s2),7)对应的操作是求子串,即返回串s1的第5个字符起长度为7的子串,所以strsub(s1,strlen(s2),7)=“EF”;同理,strsub(s1,2,strlen(s2))=“BCDEF”;strconcat()对应的操作是连接两个串成为一个新的串,所以strconcat(strsub(s1,2,strlen(s2)),strsub(s1,strlen(s2),2))=“BCDEFEF”。

题型四(特殊矩阵的压缩存储)

1、对n阶对称矩阵压缩存储时,需要表长为()的顺序表。
A、n/2
B、n2/2
C、n(n+1)/2
D、n(n-1)/2

解析:(C)
对于对称矩阵压缩存储,只需要存储上三角区或下三角区即可,所包含的元素个数为:n+(n-1)+……+1=n(1+n)/2。

你可能感兴趣的:(数据结构,数据结构,串,矩阵,数组,二维数组)