数据结构复习题目及.docx
- 文档编号:3155513
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:44
- 大小:37.76KB
数据结构复习题目及.docx
《数据结构复习题目及.docx》由会员分享,可在线阅读,更多相关《数据结构复习题目及.docx(44页珍藏版)》请在冰豆网上搜索。
数据结构复习题目及
《数据构造-C语言版》
第一章绪论
单项选择题
1.在数据构造中,数据的基本单位是_________。
A.数据项B.数据种类C.数据元素D.数据变量
2.数据构造中数据元素之间的逻辑关系被称为______。
A.数据的储存构造B.数据的基本操作C.程序的算法D.数据的逻辑构造
3.在数据构造中,与所使用计算机没关的是数据的_______。
A.储存构造B.逻辑和物理构造C.逻辑构造D.物理构造
4.在链式储存构造中,数据之间的关系是经过________表现的。
A.数据在内存的相对地点B.指示数据元素的指针
C.数据的储存地址D.指针
5.计算算法的时间复杂度是属于一种_______。
A.事先统计的方法B.事先分析估量的方法
C.事后统计的方法D.事后分析估量的方法
6.在对算法的时间复杂度进行预计的时候,以下最正确的时间复杂度是______。
A.n2B.nlognC.nD.logn
7.设使用某算法对n个元素进行办理,所需的时间是T(n)=100nlog2n+200n+2000,则该算
法的渐近时间复杂度为_______。
A.O
(1)B.O(n)C.O(200n)D.O(nlog2n)
1
CDCBBDD
第二章线性表
单项选择题
1.链表不拥有的特色是________。
A.可随机接见任一元素B.插入和删除时不需要挪动元素
C.不用早先预计储存空间D.所需空间与线性表的长度正比
2.设次序表的每个元素占8个储存单元。
第1个单元的储存地址是100,则第6个元素占
用的最后一个储存单元的地址为。
A.139B.140C.147D.148
3.在线性链表储存构造下,插入操作算法。
A.需要判断能否表满B.需要判断能否表空
C.不需要判断表满D.需要判断能否表空和表满
4.在一个单链表中,若删除p所指结点的后继结点,则执行。
A.p->next=p->next->next;B.p->next=p->next;
C.p=p->next->next;D.p=p->next;p->next=p->next->next;
5.将长度为n的单链表接在长度为m的单链表以后的算法时间复杂度为。
A.O(n)B.O
(1)C.O(m)D.O(m+n)
6.需要预分较大空间,插入和删除不需要挪动元素的线性表,其储存构造是。
A.单链表B.静态链表C.线性链表D.次序储存方式
ACCABB
填空题
1.在带表头结点的单链表中,当删除某一指定结点时,一定找到该结点的_____结点。
2.在单链表中,指针p所指结点为最后一个结点的条件是。
3.将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数是。
4.在一个长度为n的次序表中第i个元素(1≤i≤n)以前插入一个元素时,需向后挪动元
素的个数是。
5.在长度为n的次序表中插入一个元素的时间复杂度为。
1前驱
2p->next==NULL
2
4.n-i+1
5.O(n)
例题分析
【例2-1】编写一个算法将一个单链表逆转,要求在原表长进行,不一样意重新建链表。
解:
该算法可以在遍历原表的时候将各结点的指针逆转,从原表的第一个结点开始,头
结点的指针在最后更正成指向原表的最后一个结点,即新表的第一个结点。
实现本题功能的
函数以下:
voidinverse(Lnode*h)
{s=h->next;
if(s==NULL)return;
q=NULL;
p=s;
while(p!
=NULL)
{p=p->next;
s->next=q;
/*逆转指针*/
q=s;
/*指针前移*/
s=p;
}
h->next=q;
/*头指针h的后继是p*/
}
【例2-2】编写一算法将两个按元素值递加有序摆列的单链表
A和B合并成一个按元素
值递加有序摆列的单链表
C。
解:
关于两个或两个以上的,结点按元素值有序摆列的单链表进行操作时,应采纳“指
针平行挪动,挨次扫描达成”的方法。
从两表的第一个结点开始顺链表逐一将对应数据元素
进行比较,复制小的并插入
c表尾。
当两表中之一已到表尾,则复制另一个链表的节余部分,
插入到c表尾。
设pa、pb分别指向两表当前结点,
p指向c表的当前表尾结点。
若设
A中
当前所指的元素为a,B中当前所指的元素为b,则当前应插入到
C中的元素c为
a
a
b
c
a
b
b
比方:
A=(3,5,8,11)
B=(2,6,8,9,11,15,20)
则C=(2,3,5,6,8,8,9,11,11,15,20)
实现本题功能的函数以下:
Lnode*hb(Lnode*pa,Lnode*pb)
{Lnode*p,*q,*pc;
pc=(Lnode*)malloc(sizeof(Lnode));/*建立表c的头结点pc*/
3
p=pc;/*p指向C表头结点*/
while(pa!
=NULL&&pb!
=NULL)
{
q=(Lnode*)malloc(sizeof(Lnode));/*建立新结点q*/
if(pb->data
{q->data=pb->data;/*B中结点值小,将其值赋给q的数据域*/
pb=pb->next;/*B中指针pb后移*/
}
else
{q->data=pa->data;/*相反,将A结点值赋给q的数据域*/
pa=pa->next;/*A中指针pa后移*/
}
p->next=q;/*将q接在p的后边*/
p=q;/*p一直指向C表当前尾结点*/
}
while(pa!
=NULL)/*若表A比B长,将A余下的结点链在C表尾*/
{q=(Lnode*)malloc(sizeof(Lnode));
q->data=pa->data;
pa=pa->next;
p->next=q;
p=q;
}
while(pb!
=NULL)/*若表B比A长,将B余下的结点链在C表尾*/{q=(Lnode*)malloc(sizeof(Lnode));
q->data=pb->data;
pb=pb->next;
p->next=q;
p=q;
}
p->next=NULL;
p=pc;/*p指向表C的头结点pc*/
pc=p->next;/*改变指针状态,使pc指向p的后继*/
free(p);/*开释p空间*/
return(pc);
}
此算法的时间复杂度为O(m+n),此中m,n分别是两个被合并表的表长。
4
第三章栈和队列
单项选择题
1.在初始为空的货仓中挨次插入元素f,e,d,c,b,a此后,连续进行了三次删除操作,
此时栈顶元素是。
A.cB.dC.bD.e
2.若某货仓的输入序列是1,2,3,...,n,输出序列的第一个元素为n,则第i个输出元素
为。
A.iB.n-iC.n-i+1D.哪个元素无所谓
3.向一个栈顶指针为h的带头结点链栈中插入指针s所指的结点时,应执行。
A.h->next=s;B.s->next=h;
C.s->next=h;h=h->next;D.s->next=h->next;h->next=s;
4.一个栈的入栈序列是a,b,c,d,e,则栈的不行能的输出序列是。
A.edcbaB.decbaC.dceabD.abcde
5.栈和队列的共同点是。
A.都是先进后出B.都是先进先出
C.只同意在端点处插入和删除元素D.没有共同点
6.关于循环队列。
A.没法判断队列能否为空B.没法判断队列能否为满
C.队列不行能满D.以上说法都不是
7.若用一个大小为6的数组来实现循环队列,且当前队尾指针rear和队头指针front的值分
别为0和3。
当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为。
A.1和5B.2和4C.4和2D.5和1
8.判断一个循环队列QU(最多元素为m0)为满队列的条件是。
A.QU->front==QU->rearB.QU->front!
=QU->rear
C.QU->front==(QU->rear+1)%m0D.QU->front!
=(QU->rear+1)%m0
9.判断一个循环队列QU(最多元素为m0)为空的条件是。
A.QU->front==QU->rearB.QU->front!
=QU->rear
C.QU->front==(QU->rear+1)%m0D.QU->front!
=(QU->rear+1)%m0
BCDCCDACA
填空题
1.在求表达式值的算符优先算法中使用的主要数据构造是。
2.设有一个空栈,现输入序列为1,2,3,4,5。
经过push,push,pop,push,pop,push,
pop,push后,输出序列是
。
3.仅同意在同一端进行插入和删除的线性表称为
。
7.在次序栈s中,栈为空的条件是
,栈为满的条件是_____。
4.用S表示入栈操作,X表示出栈操作,若元素入栈次序为
1234,为了获得
1342出栈顺
5
序,相应的S、X操作串为
。
5.用一个大小为1000的数组来实现循环队列,当前
rear和front的值分别为
0和994,若
要达到队满的条件,还需要连续入队的元素个数是
。
1.栈
2.234
3.栈
4.s.top==s.base,SXSSXSXX
例题分析
【例3-1】编程实现:
用除法把十进制数变换成二进制数。
解:
算法思想:
用初始十进制数除以2把余数记录下来而且若商不为0则再用商去除以
2直到商为0,这时把所有的余数按出现的逆序摆列起来(先出现的余数排在后边,后出现
的余数排在前面)就获得了相应的二进制数,如把十进制数35变换成二进制数的过程如图
3-1所示。
35余数结果:
10011
171
81
40
20
1
0
1
图3-1十进制数变换成二进制数的过程
由题意可知,我们可以用一个栈来保存所有的余数,当商为0时则让
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习 题目