工程图学总复习题docxWord文档格式.docx
《工程图学总复习题docxWord文档格式.docx》由会员分享,可在线阅读,更多相关《工程图学总复习题docxWord文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
![工程图学总复习题docxWord文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/24/4e6e0ea3-aab9-4ba3-ae5d-0f3f276fd202/4e6e0ea3-aab9-4ba3-ae5d-0f3f276fd2021.gif)
(12)下列四种基本逻辑结构中,数据元素之间关系最弱的是(
A.集合B.
(13)与数据元素本身的形式、
A.逻辑结构B.
B.线性结构
B.存储结构
C・
C.
索引
D)0树形结构
C)o逻辑结构
D.
线性结构C.树形结构
内容、相对位置、个数无关的是数据的(
存储结构C.逻辑实现
散列
集合
逻辑和存储
图形结构
)。
存储实现
(14)每一个存储结点只含有一个数据元索,存储结点存放在连续的存储空间,另外有一组指明结点存储位置的表,该存储方式是(C)存储方式。
A.顺序B.链式C.索引
(15)算法能正确的实现预定功能的特性称为算法的(A)。
A.正确性B.易读性C.健壮性
(16)算法在发生非法操作时町以作出处理的特性称为算法的(
A.正确性
高效性
B.易读性
(D
(n)
D)0
健壮性
(17)下列吋间复朵度中最坏的是
A.O
(1)B.O
(18)下列算法的时间复杂度是(
for(i=0;
i<
n;
i++)
for(j=O;
j++)
c[i]D]=i+j;
A.O
(1)B.O(n)
(19)算法分析的两个主要方曲是(A
A.空间复杂性和时间复杂性
C.可读性和文档性
(20)计算机算法必须具备输入、输岀和(
A.计算方法
C.解决问题的有限
)o
B.
)0
线性表
O(log2n)
0(log2n)
O(n2)
正确性和简明性数据复杂性和程序复杂性
排序方法
一.判断题(下列各题,正确的请在前面的括号内打V;
错误的打X)
(X)
(1)线性表的链式存储结构优于顺序存储。
(X)
(2)链表的每个结点都恰好包含一个指针域。
(V)(3)在线性表的链式存储结构屮,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
(X)(4)顺序存储方式的优点是存储密度人,插入、删除效率高。
(X)(5)线性链表的删除算法简单,因为当删除链中某个结点后,计算机会口动地将后续的各个单元向前移动。
(X)(6)顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
(V)(7)线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。
(V)(8)线性表采用顺序存储,必须占用一片连续的存储单元。
(x)(9)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
(X)(10)插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。
2.填空题
顺序表屮逻辑上相邻的元素在物理位置上必须相连。
线性表中结点的集合是有限的,结点间的关系是—一对一关系。
顺序表相对于链表的优点是:
节省存储和随机存取。
链表相对于顺序表的优点是:
插入、删除方便。
(5)采用顺序存储结构的线性表叫顺序表。
(6)顺序表中访问任意一个结点的时间复杂度均为0
(1)。
(7)链表相对于顺序表的优点是插入、删除方便;
缺点是存储密度小。
(8)在双链表中要删除已知结点*P,其时间复杂度为0
(1)°
(9)在单链表中耍在已知结点*PZ前插入一个新结点,需找到忡的直接前趋结点的地址,其查找的时间复杂度为0(n)。
单链表屮需知道—头指针才能遍历祭个链表。
性表屮第一个结点没有氏接前趋,称为开始结点。
在一个长度为n的顺序表屮删除第i个元素,要移动n・i个元素。
在一个长度为n的顺序表屮,如果要在第i个元素前插入一个元素,要示移n・i+l个元素。
在无头结点的单链表中,笫一个结点的地址存放在头指针中,而其它结点的存储地址存放在而趋结点的指针域中。
当线性表的元素总数基本稳定,几很少进行插入和删除操作,但耍求以最快速度存取线性表中的元素时,应采用顺序存储結构。
在线性表的链式存储中,元素之间的逻辑关系是通过_指针决定的。
在双向链表中,每个结点都有两个指针域,它们一个指向其前趋结点,另一个指向其后继结点。
对一个需要经常进行插入和删除操作的线性表,采用链武存储结构为宜。
双链表中,设p是指向其屮待删除的结点,则需要执行的操作为:
p->
prior-〉next二p->
next。
在如图所示的链表屮,若在指针P所在的结点之后插入数据域值为a和b的两个结点,则可用卜列两个语彳】J:
S->
next->
next二P->
next;
和P->
next=S;
来实现该操作。
3.选择题
(1)在具有n个结点的单链表屮,实现(A)的操作,其算法的时间复杂度都是0(n)o
A.遍历链表或求链表的第i个结点点
C.删除开始结点
B.在地址为P的结点之后插入一个结
D.删除地址为P的结点的示继结点
(2)设a、b、c为三个结点,p、10、20分别代表它们的地址,则如下的存储结构称为(B)。
循环链表B.单链表C.双向循环链表D.双向链表
(3)单链表的存储密度(C)o
A.大于1B.等于1C.小于1D.不能确定
(4)已知一个顺序存储的线性表,设每个结点占m个存储单元,若第一个结点的地址为B,则第i个结点的地址为(A)o
(5)在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为(B)。
(6)设Llink.Rlink分别为循环双链表结点的左指针和右指针,则指针P所指的元素是双循环链表L的尾元索的条件是(D)。
A.P二二LB.P->
Llink==LC.P==NULLD.P->
Rlink==L
(7)两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元索前驱的条件
(11)L是线性表,已知LengthUst(L)的值是5,经DelList(L,2)运算后,LengthList(L)的值是(C)o
(12)单链表的示意图如F:
-i
A
B
C
D
指向链表Q结点的前趋的指针是(B)。
A.LB・PC・QD.R
(13)设p为指向单循环链表上某结点的指针,则和的直接前鞭(C)。
A.找不到B.查找时I'
可复杂度为0
(1)
C.查找时间复杂度为0(n)D.查找结点的次数约为n
(14)等概率情况下,在冇n个结点的顺序表上做插入结点运算,盂平均移动结点的数H为
(C)o
(15)在下列链表中不能从当前结点出发访问到其余各结点的是(C)。
(16)在顺序表中,只要知道(D),就可以求出任一结点的存储地址。
(17)在双链表屮做插入运算的时间复杂度为(A)o
(19)以下关于线性表的论述,不正确的为(C)。
A.线性表屮的元素可以是数字、字符、记录等不同类型
B.线性顺序表中包含的元素个数不是任意的
C.线性表中的每个结点都有且仅有一个直接前趋和-•个直接后继
D.存在这样的线性表,即表屮没有任何结点
A.插入
B.根据序号杏找C.删除
D.根据元素杏找
(20)在(B)的运算屮,使用顺序表比链表好。
栈和队列
1.判断题(下列各题,正确的请在前面的括号内打V;
(V)
(1)栈是运算受限制的线性表。
(V)
(2)在栈空的情况下,不能作出栈操作,否则产生下溢出。
(X)(3)栈一定是顺序存储的线性结构。
(V)(4)栈的特点是"
后进先出"
。
(X)(5)空栈就是所有元素都为0的栈。
(乂)(6)在C或C++语言中设顺序栈的长度为MAXLEN,则top二MAXLEN吋表示队满。
(V)(7)链栈与顺序栈相比,其特点之一是通常不会出现栈满的情况。
(乂)(8)―个栈的输入序列为:
A,B,C,D,可以得到输出序列:
C,A,B,D。
(X)(9)递归定义就是循环定义。
(V)(10)将十进制数转换为二进制数是栈的典型应用之一。
(1)在栈结构中,允许插入、删除的一端称为栈顶°
(2)在顺序栈中,当栈顶指针top=-l时,表示栈空。
(3)在冇n个元素的栈中,进栈操作的时间复杂度为0
(1)°
(4)在栈中,出栈操作的时间复杂度为:
0
(1)o
(5)已知表达式,求它的后缀表达式是栈的典型应用。
(6)在一个链栈中,若栈顶指针等于NULL,则表示栈空。
(7)向一个栈顶指针为top的链栈插入一个新结点*p吋,应执行p->
next二top;
和top=p;
操作。
(8)顺序栈S存储在数组S->
data[0..MAXLEN-1]中,进栈操作时要执行的语句有:
S->
top++。
(或二S->
top+l)
(9)链栈LS,指向栈顶元素的指针是LS—°
(10)从一个栈删除元索时,首先取出栈顶元素,然后再移动栈顶指针。
(11)由于链栈的操作只在链表的头部进行,所以没冇必要设置头结点。
(12)已知顺序栈S,在对S进行进栈操作Z前首先要判断栈是否满。
(13)已知顺序栈S,在对S进行出栈操作之前首先要判断栈是否空。
(14)若内存空间充足,链栈可以不定义栈满运算。
(15)链栈LS是空的条件是LS->
noxt二NULL。
(16)链栈LS的栈顶元素是链表的首元素。
(17)同一栈的各元素的类型一相同。
(18)若进栈的次序是A、B、C、D、E,执行三次出栈操作以后,栈顶元索为Bo
(19)A+B/C-D*E的后缀表达式是:
ABC/+DE*-。
(20)四个元素按A、B、C、D顺序进S栈,执行两次Pop(S,x)运算后,x的值是CO
(1)插入和删除只能在一端进行的线性表,称为(C)o
A.队列B.循环队列C.栈D.循环栈
(2)设有编号为1,2,3,4的四辆列车,顺序进入一个栈结构的站台,下列不可能的出站顺序为(D)
A.1234B.1243C.1324D.1423
(3)如果以链表作为栈的存储结构,则出栈操作时(B)
A.已固定B.不固定
C.可以改变D.动态变化
(6)在C或C++语言中,一个顺序栈一旦被声明,其占用空间的大小(A)。
(7)带头结点的链栈LS的示意图如下,栈顶元素是(A)
H
7
r
A.AB.BC.CD・D
(8)链栈与顺序栈相比,冇一个比较明显的优点是(B)。
A.插入操作更加方便B.通常不会出现栈满的情况。
C.不会出现栈空的情况D.删除操作根加方便
(9)从一个栈顶指针为top的链栈屮删除一个结点时,用x保存被删除的结点,应执行下列(D)命令。
A.x二top;
top=top->
B.top=top->
x=top->
data;
C.x=top->
D.x=top->
(10)在一个栈顶指针为HS的链栈中,将一个S指针所指的结点入栈,应执行下列(B)命令。
A.HS->
B.S->
next=HS->
HS->
C.S->
HS=S;
D.S~>
next=HS;
HS=HS->
(11)四个元索按A、B、C、D顺序进S栈,执行两次Pop(S,x)运算后,栈顶元素的值是(B)。
A.AB.BC.CD.D
(12)元素A,B,C,D依次进栈以后,栈底元素是(A)。
(13)经过下列栈的运算后,再执行ReadTop(s)的值是(A)。
InitStack(s)(初始化栈);
Push(s,a);
Push(s,b);
Pop(s)
A.aB.bC.1D・0
(14)经过下列栈的运算后,x的值是(B)。
ReadTop(s);
Pop(s,x);
(15)经过下列栈的运算示,x的值是(B)。
Pop(s,x);
(16)经过下列栈的运算后,SEmpty(s)的值是(InitStack(s)(初始化栈)
A.aB.b
(17)
(B)o
B.先移动栈顶指针,后存入元素
D.同吋进行
向顺序栈中压入元素时,先存入元素,后移动栈顶指针
C.谁先谁后无关紧要
(18)初始化一个空间大小为5的顺序栈S后,S->
top的值是(B)。
A.0B.-1C.不再改变D.动态变化
(19)一个栈的入栈次序ABODE,则栈的不可能的输出序列是(C)。
A.EDCBAB.DECBAC.DCEABD.ABCDE
(20)设冇一个顺序栈S,元素A,B,C,D,E,F,依次进栈,如果六个元索出栈的顺序是B,D,C,F,E,A,则栈的容量至少应是(A)。
A.3B.4C.5D.6
队列
1.判断题(下列各题,正确的请在前面的括号内打V;
(V)
(1)队列是限制在两端进行操作的线性表。
(V)
(2)判断顺序队列为空的标准是头指针和尾指针都指向同一个结点。
(X)(3)在链队列上做出队操作吋,会改变front指针的值。
(V)(4)在循环队列中,若尾指针rear大于头指针front,其元素个数为rear-front0
(X)(5)在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p二h。
(V)(6)链队列在一定范围内不会出现队满的情况。
(X)(7)在循环链队列小无溢出现象。
(X)(8)栈和队列都是顺序存储的线性结构。
(X)(9)在队列屮允许删除的一端称为队尾。
(X)(10)顺序队和循环队关于队满和队空的判断条件是一样的。
在队列中存取数据应遵循的原则是先进先illo
队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
在队列中,允许插入的一端称为队尾。
在队列中,允许删除的一端称为队首(或队头)。
队列在进行出队操作时,首先要判断队列是否为空。
顺序队列在进行入队操作时,首先要判断队列是否为满°
顺序队列初始化后,front=rcar=~1
解决顺序队列“假溢出”的方法是采用循环队列。
循环队列的队首指针为front,队尾指针为roar,则队空的条件为front二二。
链队列LQ为空时,LQ->
front~>
next-NULL
设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的吋间复朵度为0(n)。
设长度为n的链队列用单循环链表表示,若只设尾指针,则出队操作的吋间复朵度为0
(1)。
在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为空。
设循环队列的头指#front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为:
front==(rear+l)%MAXLEN。
在一个链队列中,若队首指针为front,队尾指针为rear,则判断该队列只冇一个结点白勺条件为:
front二&
&
front!
NULL。
(或fton&
front〈>
NULL)
向一个循环队列中插入元素吋,首先要判断队尾指针,然后再向指针所指的
位置写入新的数据。
读队首元素的操作不改变(或不影响)队列元素的个数。
(18)设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有
front二11,rear二19,则循环队列中还冇8个元素。
(L=(N+rear—front)%N=(40+19—11)%40=8)
(19)队列Q,经过下列运算:
InitQueue(Q)(初始化队列);
InQueue(Q,a):
InQueue(Q,b);
OutQueue(Q,x);
ReadFront(Q,x);
QEmpty(Q);
后的值是0。
(20)队列Q经过InitQueue(Q)(初始化队列);
InQueue(Q,a);
InQueue(Q,b);
ReadFront(Q,x)后,x的值是a。
(1)队列是限定在(D)进行操作的线性表。
A.
屮间
B.队首
C.队尾
D・端点
(2)
队列屮的元素个数是(B)。
不变的
B.可变的
C.任意的
D.0
(3)
同一队列内各元素的类型(A)。
必须一致
B.不能一致
C.可以不一致
D.不限制
(4)
队列是一个(
C)线性表结构。
不加限制的
B.推广了的
C.加了限制的
D.非
(5)当利用大小为n的数组顺序存储一个队列时,该队列的最后一个元素的下标为(B)o
A.n-2B.n~lC.nD.n+1
(6)一个循环队列一旦说明,其占用空间的人小(A)。
A.已固定B.可以变动C.不能固定D.动态变化
(7)循环队列占用的空间(A)。
A.必须连续B.不必连续C.不能连续D.可以不连续
(8)存放循环队列元素的数组data冇10个元索,则data数组的下标范围是(B)。
0..10
0・・9C.1..9
D.1..10
(9)
若进队的序列为:
A,
B,
C,D,则出队的序列是(
C)o
B,C,D,A
B・
A,C,B,
A,B,C,D
C,B,D,
(10)
四个元素按:
C,
D顺序连续进队Q,
则队尾元素是(D)。
D・D
(11)
四个元索按:
执彳了一次OutQueue(Q)操作后,队
头元索是(B)。
A.A
B.B
C.C
D.D
(12)四个元索按:
A,B,C,
执行四次OutQueue(Q)操作后,再
执行QEmpty(Q);
后的值是(B
A.0
B.1
C.2
D.3
(13)队列Q,经过下列运算后,x的值是(B)。
InitQueue(Q)(初始化队列);
InQueue(Q,b);
OutQueue(Q,x);
ReadFront(Q,x);
LQ->
front
A.SQ->
rear==SQ->
C-SQ->
rear==0
(14)循环队列SQ队满的条件是(B)o
B.(SQ->
rear+l)%MAXLEN==SQ->
D.SQ->
front==0
(15)设链栈屮结点的结构:
data为数据域,next为指针域,且top是栈顶指针。
若想在链栈的栈顶插入一个由指针s所指的结点,则应执行下列(A)操作。
A.s->
next=top->
next;
top->
next=s;
B.top->
C.s->
next=top;
top=top->
D・s->
top=s;
(16)
C-C
带头结点的链队列LQ示意图如下,链队列的队头元素是(A)
(17)带头结点的链队列LQ示意图如下,指向链队列的队头指针是(C)
A.LQ->
frontB.I.Q->
rear
C.LQ->
front->
ne