数据结构复习Word文档下载推荐.docx
- 文档编号:21653447
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:125
- 大小:380.62KB
数据结构复习Word文档下载推荐.docx
《数据结构复习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构复习Word文档下载推荐.docx(125页珍藏版)》请在冰豆网上搜索。
(B)数据项之间逻辑
(C)数据类型之间
(D)存储结构
4、在链式存储结构中,一个存储结点存储一个_________。
(A)数据项
(B)数据元素
(C)数据结构
(D)数据类型
5、数据结构在计算机内存中的表示是指_________。
(A)数据的存储结构
(B)数据结构
(C)数据的逻辑结构
(D)数据元素之间的关系
6、在数据结构中,与所使用的计算机无关的是_________。
(A)逻辑结构
(B)存储结构
(C)逻辑结构和存储结构
(D)物理结构
7、数据采用链式存储结构时,要求_________。
(A)每个结点占用一片连续的存储区域
(B)所有结点占用一片连续的存储区域
(C)结点的最后一个数据域是指针类型
(D)每个结点有多少个后继,就设多少个指针域
8、算法的时间复杂度与_________有关。
(A)问题规模
(B)计算机硬件性能
(C)编译程序质量
(D)程序设计语言
9、算法分析的目的是_________。
(A)找出数据结构的合理性
(B)研究算法中输入与输出的关系
(C)分析算法的效率以求改进
(D)分析算法的易读性和文档性
10、某算法的时间复杂度为O(n2),表明该算法的_________。
(A)问题的规模是n2
(B)执行时间等于n2
(C)执行时间与n2成正比
(D)问题规模与n2成正比
11、在数据结构中,与所使用的计算机无关的是数据的____结构。
(A)逻辑(B)存储(C)逻辑和存储(D)物理
12、在数据的存储结构中,一个存储结点存储一个_____。
(A)数据项(B)数据元素(C)数据结构(D)数据类型
13、在数据结构中,与所使用的计算机无关的是______。
(A)逻辑结构(B)存储结构
(C)物理结构(D)逻辑结构与存储结构
判断题:
1、数据结构包含数据的逻辑结构、数据的存储结构以及数据集合上定义的运算。
2、数据项是数据的最小单位。
3、数据项是数据的最小单位。
4、数据结构包含数据的逻辑结构、数据的存储结构以及数据集合上定义的运算。
5、数据的物理结构是指数据在计算机内实际的存储形式。
6、算法的优劣与算法描述语言无关,但与所用计算机有关。
应用题与算法设计题部分:
例题:
设计一个算法,求整数数组的最大元素。
解:
算法如下:
voidMaxElem(inta[],intn,int&
maxE)
{intk;
maxE=a[0];
for(k=0;
k<
n;
k++)
if(maxE<
a[k])maxE=a[k];
}
//注:
maxE表示数组a[]的前n个元素的最大元素。
设计一个算法,求整数数组的最小元素。
voidMinElem(inta[],intn,int&
minE)
minE=a[0];
if(minE>
a[k])minE=a[k];
编写一个算法,求一个整数数组中的最大元素和最小元素,并指出该算法的时间复杂度。
对应的算法如下:
voidMaxMin(inta[],intn,int&
max,int&
min)
//该算法求数组a[0......n-1]的最大元素max和最小元素min。
{max=min=a[0]
;
for(inti=1
i<
=n-1
i++)
{if(a[i]>
max)max=a[i]
elseif(a[i]<
min)min=a[i]
该算法的时间复杂度为O(n)。
编写一个算法,求一个整数数组中的最大元素和次大元素,并指出该算法的时间复杂度。
voidMax12(inta[],intn,int&
max1,int&
max2)
//该算法求数组a[0......n-1]的最大元素max1和次大元素max2。
{if(a[0]>
a[1]){max1=a[0]
max2=a[1]
else{max1=a[1];
max2=a[0];
for(inti=2;
=n-1;
max1){max2=max1;
max1=a[i];
elseif(a[i]>
max2)max2=a[i];
编写一个算法,求一个整数数组中的最小元素和次小元素,并指出该算法的时间复杂度。
voidMin12(inta[],intn,int&
min1,int&
min2)
//该算法求数组a[0……n-1]的最小元素min1和次小元素min2。
{if(a[0]<
a[1]){min1=a[0];
min2=a[1];
else{min1=a[1];
min2=a[0];
{if(a[i]<
min1){min2=min1;
min1=a[i];
min2)min2=a[i];
用C/C++语言描述下列算法,并给出算法的时间复杂度。
(1)求一个n阶方阵的所有元素之和。
(2)对于输入的任意三个整数,将它们按照从小到大的顺序输出。
(3)对于输入的任意n个整数,输出其中的最大和最小元素。
(1)算法如下:
intsum(intA[n][n],intn)
{inti,j,s=0;
for(i=0;
for(j=0;
j<
j++)s+=A[i][j];
returns;
本算法的时间复杂度为O(n2)。
(2)算法如下:
voidOrder(inta,intb,intc)
{if(a>
b)
{if(b>
c)cout<
<
c<
b<
a;
elseif(a>
elsecout<
a<
c;
else
{if(c<
a)cout<
b;
elseif(c<
b)cout<
elsecout<
本算法的时间复杂度为O
(1)。
(3)算法如下:
voidmaxmin(inta[],intn,int&
min=a[0];
max=a[0];
for(k=1;
if(a[k]>
max)max=a[k];
elseif(a[k]<
min)min=a[k];
本算法的时间复杂度为O(n)。
设n是3的倍数,分析以下算法的时间复杂度(需给出推导过程)。
voidfun(intn)
{inti,j,x,y;
for(i=0;
i<
=n;
if(3*i<
=n)
for(j=3*i;
j<
j++){x++;
y=3*x+2;
}
第2章线性表
线性表的逻辑结构特征,线性表的基本运算,线性表的两种存储结构,以及在这两种存储结构下线性表的基本运算算法的实现,顺序表和链表的优缺点比较。
掌握线性表的定义和特点,线性表的存储结构;
顺序表和链表的组织方法和算法设计。
单链表和双链表的各种算法设计。
1、线性表是_________。
(A)一个有限序列,可以为空(B)一个有限序列,不可以为空
(C)一个无限序列,可以为空(D)一个无限序列,不可以为空
2、链表不具有的特点是_________。
(A)可以随机访问任一元素(B)插入删除不需要移动元素
(C)不必事先估计存储空间(D)所需空间与线性表长度成正比
3、线性表采用链式存储结构时,其地址_________。
(A)必须是连续的(B)一定是不连续的
(C)部分地址必须是连续的(D)连续与否均可以
4、在线性表的的下列存储结构中,读取指定序号的元素花费时间最少的是_________。
(A)单链表(B)双链表(C)循环链表(D)顺序表
5、若线性表最常用的运算是存取第i个元素及其前趋的值,则采用_________存储方式节省时间。
(A)单链表(B)双链表(C)循环单链表(D)顺序表
6、在一个具有n个结点的有序单链表中插入一个新结点使得仍然有序,其算法的时间复杂度为_________.
(A)O(log2n)(B)O
(1)(C)O(n2)(D)O(n)
7、在一个单链表中,删除*p结点之后的一个结点的操作是_________。
(A)p->
next=p(B)p->
next->
next=p->
next
(C)p->
next=p(D)p->
8、在一个长度为n的线性表中顺序查找值为x的元素时,在等概率情况下,查找成功时的平均查找长度为_________。
(A)n(B)n/2(C)(n+1)/2(D)(n-1)/2
9、在一个长度为n的顺序表中,删除值为x的元素时需要比较元素和移动元素的总次数是_________。
(A)(n+1)/2(B)n/2(C)n(D)n+1
10、在一个顺序表的表尾插入一个元素的时间复杂度是_________。
(A)O(n)(B)O
(1)(C)O(n2)(D)O(log2n)
11、在一个顺序表的任何位置插入一个元素的时间复杂度是_________。
12、在一个不带头结点(首结点为*head)的单循环链表中,至少有一个结点的条件是_________。
(A)head!
=NULL(B)head->
next!
=NULL
(C)head==NULL(D)head->
next==NULL
13、在带头结点*head的循环单链表中,至少有一个结点的条件是_________。
(A)head->
=head
(C)head==NULL(D)head-<
14、带头结点的单链表head为空的判定条件是_________。
(A)head==NULL(B)head->
(C)head->
next==head(D)head!
15、将两个长度为n的有序表归并为一有序表时,算法的时间复杂度是_________。
(A)O
(1)(B)O(n)(C)O(n2)(D)O(log2n)
16、在长度为n的顺序表,当在任何位置上插入一个元素的概率相等时,插入一个元素需要移动的元素的平均个数为()
(A)n/2(B)(n-1)/2(C)(n+1)/2(D)(n+2)/2
17、在长度为n的顺序表中,删除第i个元素(1≤i≤n)需要向后移动()个元素。
(A)n-i(B)n-i+1(C)n-i-1(D)i
18、一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为()。
(A)5、4、3、2、1(B)4、5、3、2、1
(C)4、3、5、1、2(D)1、2、3、4、5
19、一个队列的入队序列是a,b,c,d,则队列的输出序列是()。
(A)dcba(B)abcd(C)adcb(D)cbda
20、空串是指()。
(A)空白串(B)长度为零的串(C)长度为1的串(D)仅由空格组成的串
21、在链式存储结构中,一个存储结点存储一个_____。
(A)数据项(B)数据元素(C)数据结构(D)数据类型
22、算法分析的目的是_______________。
(A)找出数据结构的合理性(B)研究算法中输入和输出的关系
(C)分析算法的效率以求改进(D)分析算法的易读性和文档性
23、一个队列的入队序列是abcd,则队列的输出序列是_____。
24、在表长为n的顺序表上做插入运算,平均要移动的结点数为()。
(A)n(B)n/2(C)n/3(D)n/4
25、在双链表某结点(己知其地址)前,插入一新结点,其所需时间是()。
(A)O
(1)(B)O(lgn)(C)O(n)(D)O(n2)
26、设长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为()。
(A)O
(1)(B)O(lgn)(C)O(n)DO(n2)
27、在表长为n的顺序表上做删除运算,在等概率的情况下,平均要移动的结点数为()。
(A)n/2(B)(n-1)/2(C)n/3(D)n/4
28、线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为()
(A)O(i)(B)O
(1)(C)O(n)(D)O(n/2)
29、线性表的下列存储结构中,读取指定序号的元素花费的时间最少的是______。
(A)单链表(B)顺序表(C)双链表(D)循环链表
30、线性表采用链式存储结构时,其地址_________。
(C)部分地址必须是连续的(D)连续与否均可
31、在线性表的下列存储结构中,读取指定序号的元素花费时间最少的是____。
(A)单链表(B)双链表(C)循环链表(D)顺序表
32、若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用()存储方式最省时间。
(A)单链表(B)双链表(C)单向循环链表(D)顺序表
33、在长度为n的顺序表中,向第i个元素(1≤i≤n+1)前插入一个元素需要向后移动()个元素。
34、在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()。
(A)q->
next;
p->
next=q;
(B)p->
next=q->
q=p;
q->
(D)p->
nxet=p;
35、在表长为n的顺序表上做插入运算,平均要移动的结点数为()。
36、在双链表某结点(己知其地址)前,插入一新结点,其所需时间是()。
37、在长度为n的顺序表中,当在任何位置插入一个元素的概率相等时,插入一个元素需要移动的元素的平均个数是________。
(A)n/2(B)(n-1)/2(C)(n+1)/2(D)(n+2)/2
38、若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用()存储方式最省时间。
49、在长度为n的顺序表中,向第i个元素(1≤i≤n+1)前插入一个元素需要向后移动()个元素。
40、在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()。
1、顺序查找方法只能在顺序存储结构上进行。
2、线性表的顺序存储结构优于链式存储结构。
3、对于单链表来说,只有从头结点开始才能扫描表中全部结点。
4、对于单链表来说,只有从头结点开始才能扫描表中全部结点。
5、双向链表的特点是很容易找任何一个结点的前趋和后继。
6、线性表的顺序存储结构优于链式存储结构。
7、凡是为空的单链表都是不含任何结点的。
8、向顺序表中插入一个元素,平均要移动大约一半的元素。
9.线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。
10、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。
11、线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。
12、单链表中的头结点就是单链表的第一个结点。
13、在带头结点的单循环链表中,任何一个结点的后继结点的指针均非空。
14、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都相同。
15、分配给单链表的内存单元地址必须是连续的。
16、双向链表的特点是很容易找任何一个结点的前趋和后继。
17、线性表的顺序存储结构优于链式存储结构。
18、对于单链表来说,只有从头结点开始才能扫描表中全部结点。
19、线性表就是顺序表。
20、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。
21、在带头结点的单循环链表中,任一结点的后继指针均非空。
22、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。
23、在带头结点的单循环链表中,任一结点的后继指针均非空。
24、线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。
填空题:
1、单链表是的链接存储表示。
2、在有n个元素的顺序表中删除任意一个元素所需移动结点的平均次数是。
3、在双链表中,每个结点有两个指针域,一个指向另一个指向。
4、在带有头结点的单链表L中,第一个元素结点的指针是
例题、叙述线性表的两种存储结构各自的主要特点。
答:
线性表的两种存储结构分别是顺序存储结构和链式存储结构。
顺序存储结构的主要特点是:
(1)结点中只有自身的信息域,没有关联信息域。
因此,顺序存储结构的存储密度大、存储空间利用率高。
(2)通过计算地址直接访问任何数据元素,即可以随机访问。
(3)插入和删除操作会引起大量元素的移动。
链式存储结构的主要特点是:
(1)结点除自身的信息域外,还有表示关联信息的指针域。
因此,链式存储结构的存储密度小、存储空间利用率低。
(2)在逻辑上相邻的结点在物理上不必相邻,因此,不可以随机存取,只能顺序存取。
(3)插入和删除操作方便灵活,不必移动结点只需修改结点中的指针域即可。
例题、已知顺序表L,请设计一算法,在L的第i个位置插入x。
存储结构如下:
typedefstructSqList
{ElemType*elem;
intlength;
intlistsize;
}SqList;
在顺序表L的第i个位置(下标为i-1)上插入x的算法如下:
voidInsertSqList(SqList&
L,inti,ElemTypex)
{ElemType*p,*q;
if(i<
1||i>
L.length)return;
//插入位置不合法。
p=&
L.elem[i-1];
q=&
L.elem[L.length-1];
while(q>
=p){*(q+1)=*q;
q--;
} //后移
*p=x;
//插入
L.length++;
例题、已知顺序表L,请设计一个算法,删除L中所有值为x的结点。
voidDeleteAllx(SqList&
L,ElemTypex)
{intnum=0;
inti,j;
i=0;
j=0;
while(j<
=L.length-1)
if(L.elem[j]==x){j++;
num++;
}elseL.elem[i++]=L.elem[j++];
L.length=L.length-num;
例题、已知顺序表L是有序表,其值从小到大,请编写算法,在L中插入一个数据元素x并且保持L的有序性。
voidInsertOrderSqList(SqList&
{intk=L.length-1;
while(k>
=0&
&
x<
L.elem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习