数据结构c语言版试题大全(含答案) 1 绪论
数据结构复习题:绪论
单选题
1、在数据结构中,与所使用的计算机无关的数据叫_____结构。
A存储|B物理|C逻辑|D物理和存储
2、在数据结构中,从逻辑上可以把数据结构分成______。
A动态结构和静态结构|B紧凑结构和非紧凑结构|C线性结构和非线性结构|D内部结构
和外部结构图
3、数据结构在计算机内存中的表示是指_______。
数据的存储结构|数据结构|数据的逻辑结构|数据元素之间的关系
4、在数据结构中,与所使用的计算机无关的是数据的______结构。
逻辑|存储|逻辑和存储|物理
5、在以下的叙述中,正确的是_____。
线性表的线性存储结构优于链表存储结构|二维数组是其数据元素为线性表的线性表|栈
的操作方式是先进先出|队列的操作方式是先进后出
6、在决定选取何种存储结构时,一般不考虑_______。
各结点的值如何|结束个数的多少|对数据有哪些运算|所用编程语言实现这种结构是否
方便
7、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储_______。
数据的处理方法|数据元素的类型|数据元素之间的关系|数据的存储方法
8、下面说法错误的是_______。
(1) 算法原地工作的含义是指不需要任何额外的辅助空间
(2) 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
(3) 所谓时间复杂度是指最坏情况下,估计算法执行时间的一个上界
(4) 同一个算法,实现语句的级别越高,执行效率越低
(1)|(1)、(2)|(1)、(4)|(3)
9、通常要求同一逻辑结构中的所有数据元素具有相同的特性。这意味着______。
数据元素具有同一特点|不仅数据元素所包含的数据项的个数要相同,而且对应的数据
项的类型要一致|每个数据元素都一样|数据元素所包含的数据项的个数要相等
10、以下说法正确的是_______。
数据元素是数据的最小单位|数据项是数据的基本单位|数据结构是带结构的数据项的集
合|一些表面上很不相同的数据可以有相同的逻辑结构
11、是数据的最小单元,是数据的基本单位.
数据项|数据元素|信息项|表元素
12、数据结构是指_____以及它们之间的.
(1)数据元素 (2)结构|(1)计算方法 (2)关系|(1)逻辑存储 (2)运算|(1)数据映像 (2)
算法
13、计算机所处理的数据一般具备某种内在的关系,这是的指_.
数据和数据之间存在的某种关系|元素和元素之间存在某种关系|元素内部具有某种结构
|数据项和数据项之间存在某种关系
14、数据的逻辑结构可以分为_____两类.
动态结构和表态结构|紧凑结构和非紧凑结构|线性结构和非线性结构|内部结构和外部
结构
15、数据的逻辑结构是指_____关系的整体.
数据元素之间逻辑|数据项之间逻辑|数据类型之间|存储结构之间
16、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储_____.
- 2 -
数据的处理方法|数据元素的类型|数据元素之间的关系|数据的存储方法
17、在数据的存储结构中,一个存储结点存储一个_____.
数据项|数据元素|数据结构|数据类型
18、在计算机的存储器中表示时,物理地址和逻辑地址直接对应并且是连续的,称之为
.
逻辑结构|顺序存储结构|链式存储结构|以上都对
19、数据采用链式存储结构时,要求.
每个结点用占一片连续的存储区域|所有结点占用一片连续的存储区域|结点的最后一个
数据域是指针类型|每个结点有多少个后继,就设多少个指针域
20、数据的运算_____.
效率与采用何种存储结构有关|是根据存储结构来定义的|有算术运算和关系运算两大类
|必须用程序设计语言来描述
21、下列说法中,不正确的是_____.
数据元素是数据的基本单位|数据项是数据中不可分割的最小可标识单位|数据可由若干
个数据元素构成|数据项可由若干个数据元素构成
22、不是算法的基本特性.
可行性|长度有限|在规定的时间内完成|确定性
23、计算机中算法指的是解决某一问题的有限运算序列,它必须具备输入、输出、.
可行性、可移植性和可扩充性|可行性、有穷性和确定性|确定性、有穷性和稳定性|易
读性、稳定性和确定性
24、以下不属于算法特性的是_____.
可行性|有输入|确定性|健壮性
25、下面关于算法的说法正确的是_____.
算法最终必须由程序实现|算法的有穷性是对于任意的一组输入值必须在有穷步骤后结
束|算法的可行性是指指令不能有二义性|以上几个都是错误的
26、算法的时间复杂度与______有关
问题规模|计算机硬件性能|编译程序质量|程序设计语言
27、算法分析的主要任务是分析_____.
算法是否具有较好的可读性|算法中是否存在语法错误|算法的功能是否符合设计要求|
算法的执行时间和问题规模之间的关系
28、某算法的时间复杂度为O(n2),表明该算法的_____.
问题规模是n2|执行时间等于n2|执行时间与n2成正比|问题规模与n2成正比
29、算法分析的目的是_____.
找出数据结构的合理性|研究算法中输入和输出关系|分析算法的效率以求改进|分析算
法的易读性和文档性
30、线性表是具有n个______的有限序列。
表元素|字符|数据元素|数据项
31、线性表是______。
一个有限序列,可以为空|一个有限序列,不可以为空|一个无限序列,可以为空|一个
无限序列,不可以为空
32、线性表采用链表存储时,其地址______。
必须是连续的|一定是不连续的|部分地址必须是连续的|连续与否均可以
33、链表不具备的特点是______。
可随机访问任一结点|插入删除不需要移动元素|不必事先估计存储空间|所需空间与其
长度成正比
34、线性表的静态存储结构与顺序存储结构相比优点是_______。
所有的操作算法实现简单|便于随机存取|便于插入和删除|便于利用零散的存储器空间-
3 -
35、设线性表有n个元素,以下操作中,在顺序表上实现比在链表上实现效率
更高。
输出第i(1<=i<=n)个元素值|交换第1个元素与第2个元素的值|顺序输出这n个元素的
值|输出与给定值x相等的元素在线性表中的序号
36、对于一个线性表,既要求能够较快地进行插入和删除,又要求存储结构能够反映数
据元素之间的逻辑关系,则应采用_______存储结构。 顺序|链式|散列|索引
37、设线性表中有2n个元素,以下操作中,在单链表上实现要比在顺序表上实
现效率更高。
删除指定的元素|在最后一个元素的后面插入一个新元素|顺序输出前k个元素|交换第i
个元素和第2n-i-1个元素的值(i=0,1,„,n-1)
38、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是。
单链表|静态链表|线性链表|顺序存储结构
39、如果最常用其所长的操作是取第i个结点及其前驱,则采用______结构方式最节省
时间。 单链表|双链表|单循环链表|顺序表
40、与单链表相比,双链表的优点之一是。
插入、删除操作更简单|可以进行随机访问|可以省略表头指针或表尾指针|访问前后相
邻结点更灵活 41、数据结构在计算机内存中的表示是指_____.
数据的存储结构|数据结构|数据的逻辑结构|数据元素之间的关系 42、下面程序段的时
间复杂度为_________. O(m)| O(n)|O(mn)|O(m+n)
for(int i=0;i<m;i++)
for(int j=0;j<n;j++) a[i][j]=ij;
数据结构复习题答案:绪论 单选题
1、存储|物理|逻辑|物理和存储 C 2、动态结构和静态结构|紧凑结构和非紧凑结构|线
性结构和非线性结构|内部结构和外部结构图 ? A C 3、数据的存储结构|数据结构|数据
的逻辑结构|数据元素之间的关系 A 4、逻辑|存储|逻辑和存储|物理 A 5、线性表的线性
存储结构优于链表存储结构|二维数组是其数据元素为线性表的线性表|栈的操作方式是先
进先出|队列的操作方式是先进后出 B
6、各结点的值如何|结束个数的多少|对数据有哪些运算|所用编程语言实现这种结构是
否方便 A
7、数据的处理方法|数据元素的类型|数据元素之间的关系|数据的存储方法 C 8、
(1)|(1)、(2)|(1)、(4)|(3) A
9、数据元素具有同一特点|不仅数据元素所包含的数据项的个数要相同,而且对应的数
据项的类型要一致|每个数据元素都一样|数据元素所包含的数据项的个数要相等 B 10、
数据元素是数据的最小单位|数据项是数据的基本单位|数据结构是带结构的数据项的集合
|一些表面上很不相同的数据可以有相同的逻辑结构 D
11、数据项|数据元素|信息项|表元素 A|B
12、(1)数据元素 (2)结构|(1)计算方法 (2)关系|(1)逻辑存储 (2)运算|(1)数据映像
(2)算法 A|B - 4 -
1C 2C 3A 4A 5B 6A 7C 8A 9B 10D 11AB 12AB 13B 14C13、数据和数据之间存在的某种
关系|元素和元素之间存在某种关系|元素内部具有某种结构|数据项和数据项之间存在某
种关系 B
14、动态结构和表态结构|紧凑结构和非紧凑结构|线性结构和非线性结构|内部结构和
外部结构 C
15、数据元素之间逻辑|数据项之间逻辑|数据类型之间|存储结构之间 A
16、数据的处理方法|数据元素的类型|数据元素之间的关系|数据的存储方法 C
17、数据项|数据元素|数据结构|数据类型 B
18、逻辑结构|顺序存储结构|链式存储结构|以上都对 B
19、每个结点用占一片连续的存储区域|所有结点占用一片连续的存储区域|结点的最后
一个数据域是指针类型|每个结点有多少个后继,就设多少个指针域 A
20、效率与采用何种存储结构有关|是根据存储结构来定义的|有算术运算和关系运算两
大类|必须用程序设计语言来描述 A
21、数据元素是数据的基本单位|数据项是数据中不可分割的最小可标识单位|数据可由
若干个数据元素构成|数据项可由若干个数据元素构成 D
22、可行性|长度有限|在规定的时间内完成|确定性 B
23、可行性、可移植性和可扩充性|可行性、有穷性和确定性|确定性、有穷性和稳定性
|易读性、稳定性和确定性 B
24、可行性|有输入|确定性|健壮性 D
25、算法最终必须由程序实现|算法的有穷性是对于任意的一组输入值必须在有穷步骤
后结束|算法的可行性是指指令不能有二义性|以上几个都是错误的 B
26、问题规模|计算机硬件性能|编译程序质量|程序设计语言 A
27、算法是否具有较好的可读性|算法中是否存在语法错误|算法的功能是否符合设计要
求|算法的执行时间和问题规模之间的关系 D
28、问题规模是n2|执行时间等于n2|执行时间与n2成正比|问题规模与n2成正比 C
29、找出数据结构的合理性|研究算法中输入和输出关系|分析算法的效率以求改进|分
析算法的易读性和文档性 C
30、表元素|字符|数据元素|数据项 C
31、一个有限序列,可以为空|一个有限序列,不可以为空|一个无限序列,可以为空|
一个无限序列,不可以为空 A
32、必须是连续的|一定是不连续的|部分地址必须是连续的|连续与否均可以 D
33、可随机访问任一结点|插入删除不需要移动元素|不必事先估计存储空间|所需空间
与其长度成正比 A
34、所有的操作算法实现简单|便于随机存取|便于插入和删除|便于利用零散的存储器
空间C
35、输出第i(1<=i<=n)个元素值|交换第1个元素与第2个元素的值|顺序输出这n个元
素的值|输出与给定值x相等的元素在线性表中的序号 A
36、顺序|链式|散列|索引 B
37、删除指定的元素|在最后一个元素的后面插入一个新元素|顺序输出前k个元素|交
换第i个元素和第2n-i-1个元素的值(i=0,1,„,n-1) A
38、单链表|静态链表|线性链表|顺序存储结构 B
39、单链表|双链表|单循环链表|顺序表 D
40、插入、删除操作更简单|可以进行随机访问|可以省略表头指针或表尾指针|访问前
后相邻结点更灵活 D
41、数据的存储结构|数据结构|数据的逻辑结构|数据元素之间的关系 A
42、O(m||O(m*n)|O(m+n) C - 5 - 15A 16C 17B 18B 19A 20A 21D 22B 23B 24D 25B 26A 27D 28C 29C 30C 31A
32D 33A 34C 35A 36B 37A 38B 39B 40D 41A 42C数据结构复习题:绪论
判断题
1、数据元素是数据的最小单位。
2、数据项是数据的基本单位。
3、数据元素是数据的最小单位
4、数据对象就是一组任意数据元素的集合
5、任何数据结构都具备3个基本运算: 插入、删除和查找.
6、数据是由一些类型相同的数据元素构成的
7、数据是逻辑结构与各数据元素在计算机中如何存储有关
8、如果数据元素值发生改变,则数据的逻辑结构也随之改变.
9、逻辑结构相同的数据,可以采用多种不同的存储方法.
10、逻辑结构相同的数据,结点类型也一定相同
11、逻辑结构不相同的数据,必须采用不同的存储方式来存储
12、数据的逻辑结构是指数据的各数据项之间的逻辑关系.
13、算法的优劣与算法描述语言有无关,但与所有计算机有关。
14、算法可以用不同的语言描述,如果用C或Pascal等高级语言来描述,则算法实际
上就是程序了。
15、程序一定是算法。
16、算法最终必须由计算机程序实现。
19、健壮的算法不会因非法入输数据而出现莫名其妙的执行结果。
数据结构复习题答案:绪论
判断题
1、False
2、False
3、False
4、False
5、False
6、True
7、False
8、False
9、True
10、False
11、False
12、False
13、False
14、False
15、False
16、False
19、True- 6 -
数据结构复习题:绪论
算法分析题
1、求两个n阶矩形的乘法C=AB,其算法如下:
#define MAX 100
void maxtrixmult(int ,float a[MAX][MAX],b[MAX][MAX],float c[MAX][MAX]) {
int i,j,k;
float x;
for(i=1;i<=n;i++) //①
{
for (j=1;j<=n;j++) //②
{
x=0; //③
for(k=1;k<=n;k++) //④
x+=a[i][k]b[k][j]; //⑤
c[i][j]=x; //⑥
}
}
}
计算①~⑥各语句的频度,并分析该算法的时间复杂度。
2、设n是偶数,试计算运行下列程序段后m的值并给出该程序段的时间复杂度。 m=0;
for(i=1;i<=n;i++)
for(j=21;j<=n;j++)
m++;
3、阅读下列算法:
void suan_fa(int n)
{
int i,j,k,s,x;
for (s=0,i=0;i<n;i++)
for (j=i;j<n;j++)
s++;
i=1;j=n;x=0;
while (i<j)
{
i++;
j–;
x+=2;
}
pirntf(“s=%d,x=%d”,s,x);
}
(1) 分析算法中语句"s++;"的执行次数;
(2) 分析算法中语句"x+=2;"的执行次数;- 7 -
(3) 分析该算法的时间复杂度;
(4) 假定n=5, 试指出执行该算法的输出结果。
6、设n是偶数,试计算运行下列程序段后m的值并给出该程序段的时间复杂度。
int m=0,i,j;
for (i=1;i<=n;i++)
for (j=2i;j<=n;j++)
m++;
数据结构复习题答案:绪论
算法分析题
1、答: 语句 频度
for(i=1;i<=n;i++) //① „„ n+1
{ for (j=1;j<=n;j++) //② „„ n(n+1)
{x=0; //③ „„ n2
for(k=1;k<=n;k++) //④ „„ n2(n+1)
x+=a[i][k]b[k][j]; //⑤ „„ n3
c[i][j]=x; //⑥ „„ n2
所以:f(n)n+1+ n(n+1)+ n2+ n2(n+1)+ n3+ n2=2n3+4n2+2n+1=O( n3 )
2、答:m+n(n-1)
O(n2)
3、分析算法中语句”s++;”的执行次数:n+(n-1)+(n-2)+„+1=n(n+1)/2
分析算法中语句”x+=2;”的执行次数: n/2
分析该算法的时间复杂度: O(n2) 假定n=5,试指出执行该算法的输出结果: s=15, x=4
6、
数据结构复习题:绪论
填空题
1、一个数据结构在计算机中______称为存储结构。
2、数据逻辑结构包括________,和________三种类型,树形结构和图形结构
合称为。
3、在线性结构中,第一个结点________前驱结点,其余每个结点有且只有_______个前
驱结点:最后一个结点______后续结点,其余每个结点有且只有______个后续结点。
4、在树形结构中,树根结点没有______结点,其余每个结点有且只有______个前驱结
点:叶子结点没有______结点,其余每个结点后的后续结点可以______
5、在图形结构中,每个结点的前驱结点数和后续结点数可以________。
6、线性结构中元素之间存在_________关系,树形结构中元素之间存在_______关系,
图形结构中元素之间存在________关系。
7、算法的5个重要特性是_________、、、输入和输出。
8、算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算
法实现上就是程序了。这个断言是________。
9、数据结构、数据元素和数据项在计算机中的映射(或表示)分别称为存储结构、结点
和数据域。这个断言是 - 8 -。
10、下面程序段的时间复杂度是。
for (i=0;i<n;i++)
for(j=0;j<m;j++)
A[i][j]=0;
11、下面程序段的时间复杂度是_______。
i=s=0;
while(s<n)
{
i++;
s+=i;
}
12、下面程序段的时间复杂度是_______。 s=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
s+=B[i][j];
sum=s;
13、下面程序段的时间复杂度是________。 i=1;
while(i<=n)
i=i3;
14、有如下递归函数fact(n),分析其时间复杂度。int fact(int n)
{
if (n<=1)
return 1;
else
return (nfact(n-1));
}
15、指出下列各算法的时间复杂度
(1) prime(int n)
{
int i=2;
while(n%i!=0 && i<sqrt(n))
i++;
if (i1.0>sqrt(n))
printf “是一素数”;
else
printf “不是一素数”;
}
(2) sum1(int n)- 9 -
{
int p=1,sum=0,i;
for (i=1;i<=n;i++)
{
p*=i;
sum+=p;
}
returm (sum);
}
(3) sum2(int n)
{
int sum=0,i,j;
for (i=1;i<=n;i++)
{
p=1;
for (j=1;j<=i;j++)
p*=j;
sum+=p;
}
return (sum);
}
16、数据的逻辑结构是指_____.
17、一个数据结构在计算机中的______称为存储结构.
18、顺序存储方法是把逻辑上_____存储在物理位置上______里;链式存储方法中结点间
的逻辑关系是由_____的.
19、数据结构是指研究数据的_____和_____以及它们之间的相互关系,并对这种结构定
义相应的_____,设计出相应的_____,从而确保经过这些运算后所得到的新结构是原来的结
构类型.
20、一个算法具有5个特性:、、、输入和输出。
21、算法的执行时间是_____的函数。
22、数据的逻辑结构是从逻辑上描述数据,它与数据的______无关,是独立于计算机的.
23、数据的逻辑结构被分为_______、、和
4种。
24、数据的存储结构被分为、、和
4种。
25、在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着
、、的联系。
26、一种抽象数据类型包括____________和____________两个部分。
27、从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为,输出
一个二维数组b[m][n]中所有元素值的时间复杂度为
28、在下面程序段中,s=s+p语句的执行次数为,p*=j语句的执行次数为
,该程序段的时间复杂度为。
int i=0,s=0;
while(++i<=n)
{ int p=1;
for(int j=1;j<=i;j++)
p*=j;- 10 -
s=s+p;}
29、一个算法的时间复杂度为(3nn+2nlog2n+4n-7)/(5n),其数量级表示为
。
30、从一个数组a[10]中顺序查找元素时,假定查找每个元素的概率都相同,则进行一
次查找运算时的平均查找长度(即同元素的平均比较次数)为。
31、从一个数组a[7]中顺序查找元素时,假定查找第1个元素a[0]的概率为1/3,查找
第2个元素a[1]的概率为1/4,其找其余元素的概率均相同,则在查找成功时同元素的平
均比较次数为。
32、对于一个nn的矩阵A的任意矩阵元素a[i][j],按行存储时和按列存储时的地址
之差是 。设两种存储时的开始存储地址均为LOC(0,0),每个元素所占存
储单元数均为d。
33、设有一个二维数组A[10][20],按行存放于一个连续的存储空间中,A[0][0]的存储
地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是
34、设有一个二维数组A[10][20],按列为主序存放于一个连续的存储空间中,A[0][0]
的存储地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是
。
37、在线性表的单链接存储结构中,每个结点包含有两个域,一个叫,另
一个叫____________域。
数据结构复习题答案:绪论
填空题
1、映射
2、线性结构|树形结构|图形结构|非线性结构
3、没有|1|没有|1
4、前驱|1|后续|任意多个
5、任意多个
6、一对一|一对多|多对多
7、有穷性|确定性|可行性
8、错误
9、正确
10、O(nm)
11、O(√n)
12、O(n2)
13、O(log3n)
14、O(n)
15、O(√n)|O(n)|O(n2)
16、数据元素之间的逻辑关系
17、映像?表示?映像或表示
18、相邻的结点|相邻的存储单元|附加的指针字段表示
19、存储结构?物理结构|逻辑结构|运算|算法
20、可行性|有穷性|确定性
21、问题规模
22、存储结构、物理结构
23、集合结构、线性结构、树形结构、图形结构(次序无先后)
24、顺序结构、链接结构、索引结构、散列结构(次序无先后)
25、1:1|1:N|M:N
26、数据|操作
27、O(n) | O(mn)- 11 -
28、n| n(n+1)/2
29、O(n)
30、5.5
31、35/12
32、(i-j)(n-1)*d
33、322
34、226
37、值|指针
数据结构复习题:绪论
问答题
1、当你为解决某一问题而选择数据结构时,应从哪些方面考虑?
2、简述逻辑结构与存储结构的关系.
3、数据运算是数据结构的一个重要方面,试举例说明两个数据结构的逻辑结构和存储方
式完全相同,只是对于运算的定义不同,因而两个结构具有显著不同的特性,则这两个数据
结构是不同的.
数据结构复习题答案:绪论
问答题
1、解答:通常从两方面考虑:第一是算法所需的存储空间量;第二是算法所需的时
间。对算法所需的时间又涉及以下三点:
(1)程序运行时所需输入的数据总量。
(2)计算机执行每条指令所需的时间。
(3)程序中指令重复执行的次数。
2、答:数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或
“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及
其关系的表示。
3、答:栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但
由于其运算集合不同而成为不同的数据结构。 - 12 -
2 线性表
沈阳理工大学应用技术学院 信息与控制学院 计算机科学与技术教研室
2011-5-8- 13 -
数据结构复习题:线性表
单选题
1、在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需
向后移动_____个元素。
2、从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需
平均比较_____个结点。
3、在一个单链表中,已知q结点是p结点的前驱结点,若在q和p之间插入s结
点, 则执行_____。
4、线性表是_____ 。
5、对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的,
删除一个元素时大约要移动表中的_____个元素。
6、线性表采用链式存储时,其地址_____。
7、设单链表中指针p指着结点m,指针f指着将要插入的新结点x,当x插在链表中最
后一个结点m之后时,只要先修改_____后修改p->link=f即可。
8、在双向链表存储结构中,删除p所指的结点时需修改指针_____。
9、在双向链表存储结构中,删除p所指的结点的前趋结点(若存在)时需修改指针
。
10、根据线性表的链式存储结构,每个结点所含指针的个数,链表分为单链表和
。
11、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上。
12、链表不具备的特点是__。
13、不带头结点的单链表head为空的判定条件是______。
14、带头结点的单链表的head为空的判定条件是______。
15、带头结点的双循环表L为空表的条件是______。
16、非空的循环单链表head的尾结点(由p所指向)满足_______。
17、在循环双链表的p所指结点之前插入s所指结点的操作是_______。
18、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则
采用______存储方式最节省运算时间。
19、某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故
采用_____存储方式最节省运算时间。
20、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是
。
21、如果最常用的操作是取第i个结点及其前驱,则采用______存储方式最节省时间。
22、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度
是。
23、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行________操作与链表
的长度有关。
24、设线性表有n个元素,以下算法中,在顺序表上实现比在链表上实现效率
更高。
25、设线性表中有2n个元素,算法,在单链表上实现要比在顺序表上实现效率
更高。
26、与单链表相比,双链表的优点之一是_______。
27、如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个
元素前面插入新元素,在最后一个元素的后面插入新元素,则最后使用________。
28、如果对线性表的运算只有两种,即删除第一个元素,在最后一个元素的后面插入新
元素,则最好使用_______。
29、设有两个长度为n的单链表,结点类型相同。若以h1为表头指针的链表是非循环
的,以h2为表头指针的链表是循环的,则_______。
30、在长度为n的______上,删除第一个结点,其算法的时间复度为O(n)。
31、将两个各有n个元素的有序顺序表归并成一个有序顺序表,其最少的比较次数是
。
32、带头结点的单链表L为空的判定条件是_。
33、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度
是_______。
34、在一个长度为n(n>1)的带头结点的单链表h上,,另设有尾指针r(指向尾结点),
执行_______操作与链 - 14 -表的长度有关。
35、在一个双链表中,在p结点之后插入结点q的操作是______。
36、在一个双链表中,在p结点之前插入q结点的操作是______。
37、在一个双链表达式,删除p结点的操作是_______。
38、在一个双链表中,删除*p结点之后的一个结点的操作是________。
39、非空的循环单链表L的尾结点(由p所指向)满足______。
40、带头结点的双循环链表L为空表的条件是______。
41、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则
采用_________存储方式最节省运算时间。
42、如果对含有n(n>1)个元素的线性表的运算只有4种:删除第一个元素;删除最后一
个元素;在第一个元素前面插入新元素;在最后一个元素的后面插入新元素,则最好使用
。
43、某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,则
采用_______存储方式最节省运算时间。
44、设有两个长度为n的单链表,结点类型相同,若以h1为头结点的链表是非循环
的,以h2为头结点指针的链表是循环的,则。
45、在长度驎n(n>1)的______上,删除第一个元素,其算法的时间复杂度为O(n)。
46、元素A、B、C、D依次进顺序栈后,栈顶元素是_______,栈底元素是______。
47、经过以下栈运算后,X的值是______。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);
48、经过以下的栈运算后,StackEmpty(s)的值是______。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,y)
49、设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的输出序列不可能是
。
50、若线性表最常用的运算是存取第i个元素及其前驱的值,则采用______存储方式节
省时间.
51、链表不具备的特点是.
52、在一个长度为n的顺序存储的线性表中,向第i个元素(1<=i<=n+1)位置插入一个
新元素时,需要从后向前依次后移_________个元素.
53、在一个长度为n的顺序存储的线性表中,删除第i个元素(1<=i<=n)时,需要从前
向后依次前移_________个元素.
54、在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度
(即x同元素的平均比较次数,查找每个元素的概率都相等)为( ).
57、在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行
_________。
数据结构复习题答案:线性表
单选题
1、n-1|n-i+1|n-i-1|I B
2、n|n/2|(n-1)/2|(n+1)/2 D
3、s->next=p->next; p->next=s;|p->next=s->next; s->next=p;|q->next=s; s-
next=p;|p->next=s; s->next=q; C
4、一个有限序列,可以为空。|一个有限序列,不能为空。|一个无限序列,可以为
空。|一个无限序列,不能为空。 A
5、n+1|n-1|(n-1)/2|n C
6、必须是连续的。|部分地址必须是连续的。|一定是不连续的。|连续与否均可以。D
7、f->link=p;|f->link=p->link;|p->link=f->link;|f=nil; B
8、((p->rlink) ->rlink) ->link=p;p->rlink=(p->rlink) ->rlink;|(p->llink) -
rlink=p->rlink;(p->rlink)
->llink=p->llink;|p->llink=(p->llink) ->llink;((p->llink) ->llink) -
rlink=p;|((p->llink) ->llink) ->rlink=p;p->llink=(p->llink) - 15 -->llink; B
9、((p->llink) ->llink) ->rlink=p;p->llink=(p->llink) ->llink;|((p->rlink) -
rlink) ->llink=p;p->rlink=(p->rlink)
->rlink;|(p->llink) ->rlink=p->rlink;(p->rlink) ->llink=p->llink;| p-
llink=(p->llink) ->llink;((p->llink) ->llink) ->rlink=p; A
10、循环链表|多重链表|普通链表|无头结点链表 B
11、一定相邻|不一定相邻|有时相邻| B
12、可随机访问任一结点|插入删除不需要移动元素|不必事先估计存储空间|所需空间
与其长度成正比 A
13、headNULL|head->nextNULL|head->nexthead|head!=NULL A
14、headNULL|head->nextNULL|head->nexthead|head!=NULL B
15、L=NULL|L->nextNULL|L->priorNULL|L->nextL D
16、p->nextNULL|pNULL|p->nexthead|phead C
17、
p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior;|p->prior=s;p-
prior->next=s;s->next=p;s->prior=p->prior;|s->next=p;s->prior=p->prior;p-
prior=s;p->right->next=s;|s->next=p;s->prior=p->prior;p->prior->next=s;p-
prior=s; D
18、单链表|给出表头指针的单循环链表|双链表|带头结点的双循环链表 D
19、单链表|仅有头结点的单循环链表|双链表|仅有尾指针的单循环链表 D
20、单链表|静态链表|线性链表|顺序存储结构 B
21、单链表|双链表|单循环链表|顺序表 D
22、O(1)|O(n)|O(n2)|O(nlog2n) B
23、删除单链表中的第一个元素|删除单链表中的最后一个元素|在单链表第一个元素前
插入一个新元素|在单链表最后一个元素后插入一个新元素 B
24、输出第i(0<=i<=n-1)个元素值|交换第0个元素与第1个元素的值|顺序输出这n个
元素的值|输出与给定值x相等的元素在线性表中的序号 A
25、删除所有值为x的元素|在最后一个元素的后面插入一个新元素|顺序输出前k个元
素|交换第i个元素和第2n-i-1个元素的值(i=0,i,„,n-1) A
26、插入、删除操作更简单|可以进行随机访问|可以省略表头指针或表尾指针|顺序访
问相邻结点更灵活 D
27、只有表尾指针没有头指针的循环单链表|只有表尾指针没有表头指针的非循环双链
表|只有表头指针没有表尾指针的循环双链表|既有表头指针也有表尾指针的循环单链表 C
28、只有表头指针没有表尾指针的循环单链表|只有表尾指针没有表头指针的循环单链
表|非循环双链表|循环双链表 B
29、对于两个链表来说,删除第一个结点的操作,其时间复杂度都是O(1)|对于两个链
表来说,删除最后一个结点的操作,其时间复杂度都是O(n)|循环链表要比非循环链表占
用更多的内存空间|h1和h2是不同类型的变量 B
30、只有表头指针的不带表头结点的循环单链表|只有表尾指针的不带表头结点的循环
单链表|只有表尾指针的带表头结点的循环单链表|只有表头指针的带表头结点的循环单链
表 A
31、n|2n-1|2n|n-1 A
32、LNULL|L->nextNULL|L->nextL|L!=NULL B
33、O(1)|O(n)|O(n^2)|O(nlog2n) B
34、删除单链表中的第一个元素|删除单链表中的最后一个元素|在单链表第一个元素前
插入一个新元素|在单链表最后一个元素后插入一个新元素 B
35、- 16 -
q->prior=p;p->next=q;p->next->prior=q;q->next=p->next;|q->next=p->next;p-
next->prior=q;p->next=q;q->prior=p;|p->next=q;q->prior=p;q->next=p->next;p-
next->prior=q;|p->next->prior=q;q->next=p->next;q->prior=p;p->next=q; B
36、
p->prior=q;q->next=p;p->prior->next=q;q->prior=p->prior;|q->prior=p-
prior;p->prior->next=q;q->next=p;p->prior=q->next;|q->next=p;p->next=q;q-
prior->next=q;q->next=p;|p->prior->next=q;q->next=p;q->prior=p->prior;p-
prior=q; D
37、
p->prior->nexxt=p->next;p->next->prior=p->prior;|p->prior=p->prior->prior;p-
prior->prior=p;|p->next->prior=p;p->next=p->next->next;|p->next=p->prior-
prior;p->prior=p->rprior->prior A
38、
p->next=p->next->next;p->next->next->prior=p;|p->next->prior=p;p->next=p-
next->next;|p->next=p->next->next;p->next->prior=p;|p->next->next=p->next;p-
next->pror=p; C
39、p->nextNULL|pNULL|p->nextL|pL C
40、L->NULL|L->next->priorNULL|L->priorNULL|L->nextL D
41、单链表|给出表头指针的循环单链表|双链表|带头结点的循环双链表 D
42、只有尾结点指针没有头结点指针的循环单链表|只有尾结点指针没有头结点指针的
非循环单链表|只有头结点指针没有尾结点指针的循环双链表|既有头结点指针也有尾结点
指针的循环单链表 C
43、单链表|仅有头结点的单循环链表|双链表|仅有尾结点指针的单循环链表 D
44、对于两个链表来说,删除第一个结点的操作,其时间复杂度都是O(1)|对于两个链
表来说,删除最后一个结点的操作,其时间复杂度都是O(n)|循环链表要比非循环链表占
用更多的内在空间|h1和h2是不同类型的变量 B
45、只有首结点指针h的不带头结点的循环单链表|只有尾结点指针r的不带头结点的
循环单链表|只有尾结点指针r的带头结点h的循环单链表|只有头结点h的循环单链表 A
46、A|B|C|D D|A
47、a|b|1|0 A
48、a|b|1|0 C
49、A、B、C、D|D、C、B、A|A、C、D、B|D、A、B、C D
50、单链表|双链表|单循环链表|顺序表 D
51、可随机访问任一结点|插入删除不需要移动元素|不必事先估计存储空间|所需空间
与其长度成正比 A
52、n-i|n-i+1|n-i-1|I B
53、n-1|n-i+1|n-i-1|I A
54、n|n/2|(n+1)/2|(n-1)/2 C
57、
p=q->next;p->next=q->next;|p=q->next;q->next=p;|p=q->next;q-next=p->next;|q-
next=q->next->next;q->next=q; C- 17 -
数据结构复习题:线性表
判断题
1、顺序存储的线性表可以随机存取。
2、线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,
因此,是属于同一数据对象。
3、在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点查
找任何一个元素。
4、在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机
存取的存储结构。
5、链表的每个结点中,都恰好包含一个指针。
6、线性表中每个元素都有一个直接前驱和直接后继。
7、线性表中所有元素的排列顺序必须由小到大或由大到小。
8、静态链表的存储空间在运算中可以改变大小。
9、静态链表既有顺序存储结构的优点,又有动态链表的优点。所以,它存取表中的第i
个元素的时间与i无关。
10、静态链表中能容纳元素个数的最大数在定义时就确定了,以后不能增加。
11、静态链表与动态链表的插入、删除操作类似,不需做元素的移动。
12、线性表的顺序存储结构优于链式存储结构。
15、在双链表中,可以从任一结点开始沿同一方向查找任何其他结点。
数据结构复习题答案:线性表
判断题
1、True
2、True
3、False
4、False
5、False
6、False
7、False
8、False
9、False
10、True
11、True
12、False
15、False
数据结构复习题:线性表
算法分析题
1、己知一个顺序表L,其中的元素按值非递减有序排列,设计一个算法插入一个元素x后
保持该顺序表仍按递减有序排列。要求算法的空间复杂度为O(1)。
2、设计一个算法从顺序表L中删除所有值为X的元素。要求算法的空间复杂度为
O(1)。
3、从顺序表L中删除重复的元素,并使剩余元素间的相应次序保持不变.要求本算法的
空间复杂记度为O(1)。
4、有一个单链表(不同结点的数据域值可能相同),其头指针为head,设计一个算法计算
数据域为x的结点个数。 - 18 -5、己知线性表元素递增有序,并以带头结点的单链表作
存储结构,设计一个高效算法,删除表中所有值大于mink且小于maxk的元素(若表中存在
这样的元素)。并分析所写算法的时间复杂度。
6、设计一个在带头结点的单链表中删除一个最小值结点的高效算法。
7、有一个不带头结点的单链表L(至少有1人结点),其头指针为head,设计一个算法将L
逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。
8、用单链表表示集合,设计一个算法求两个集合的差。要求不破坏原有的结点。
9、用单链表表示集合,设计一个算法求两个集合的并。要求不破坏原有的结点。
10、设计一个算法,将一个头结点指针为a的单链表A分解成两个单链表A和B,其头结
点指针分别为a和b,使得A链表中含有原链表A中序号为奇数的元素,而B链表中含有原
链表A中序号为倒数的元素,且保持原来的相对顺序。
11、有一个单链表,其结点的元素值以递增有序排列,设计一个算法删除该单链表中多余
的元素值相同的结点。
12、己知两个存放整数的有序单链表(己按整数从小至大的顺序排序),指针L1和L2分
别指向这两个单链表的头结点。设计一个算法,将L1和L2合并成一个单链表,且新的链表
仍按整数由小到大的顺序排列,新的单链表的结点由L1和L2的结点构成。要求合并后的
单链表利用原来单链表的存储空间。
13、设计一个算法,将线性表lb连接到la之后,要求其时间复杂度为O(1),占用的辅助
空间尽量小。描述所用的结构。
14、设指针p指向双链表中的结点X,指针f指向将要插入的新结点Y,Y要插入在结点X
之后,写出指针需要修改的有关步骤。
15、有一个循环双链表,每个结点由两个指针(prior和next)以及关键字(data)构成,p
指向其中某一结点,设计一个算法从该循环双链表中删除p所指的结点。
16、设有一个循环双链表,其中有一结点的指针为p,设计一个算法将p与其后续结点进
行交换。
19、设A和B是两个单链表(带头结点),其表中元素递增有序。设计一个算法将A和B
归并成一个按元素值递增有序的单链表C,要求辅助空晨为O(1),并分析算法的时间复杂
度。
数据结构复习题答案:线性表
算法分析题
1、答:
void insert(sqlist &L,ElemType x)
{
int i=0,j;
while(i<L.Length && L.data[i]<x)
i++:
for (j=L.Length-1;j>=i;j–)
L.data[j+1]=L.data[j];
L.data[i]=x;
L.Length++;
}
2、void delnode(SqList &A,ElemType item )
{
int k=0,i=0;
while (i<A.length)
{
if(