学了【数据结构】 看看这些练习题你能拿多少分

简介: 说明: 先自测看看自己能答对多少道题 答案在最后

17. 线性表是有 n 个( )的有限序列。(2分)


A.数据表


B.字符


C.数据元素


D.数据项


18. 线性表是一个( )。(2分)


A.有限序列,可以为空


B.有限序列,不可以为空


C.无限序列,可以为空


D.无限序列,不可以为空


19. 以下( )是一个线性表。(2分)


A.由 n 个实数组成的集合


B.由 100 个字符组成的序列


C.由所有整数组成的序列


D.所有奇数组成的序列


20. 在线性表中,除了开始元素外,每个元素( )。(2分)


A.只有唯一的前驱元素


B.只有唯一的后即元素字符


C.有多个前驱元素


D.有多个后继元素


21. 顺序表的最大有优点是( )。(2分)


A.存储密度大  存储密度是1


B.插入运算方便


C.删除运算方便


D.可以方便地用于各种逻辑的存储表示   顺序存储


22. 对于顺序表,访问编号为 i 的元素的时间复杂度为( )。(2分)


A. O(n)


B. O(1)


C.O(nlog2n)


D.O(log2n)


23. 对于顺序表,在编号为 i 处插入一个新元素的间复杂度为( )。(2分)


A. O(n)


B. O(1)


C.O(nlog2n)


D.O(log2n)


24. 采用顺序查找法对长度为 n 的线性表进行查找(不采用表尾设监视哨的方法),最坏的情况下要进行( )次元素间的比较。(2分)


A.n+2


B.n


C.n-1


D.n/2


25. 带头结点的单向链表的头指针为 head,该链表为空的判定条件是( )的值为真。(2分)


A.head = = NULL


B.head.getNext()= =head


C.head.getNext()= = NULL


D.head = =head.getNext()


26. 非空的单向循环链表的尾结点满足( )(设头指针为 head,指针 p 指向尾结点)。(2分)


A.p.getNext()= =NULL


B.p= =NULL


C.p.getNext()= =head


D.p= =head


27. 链表所具备的特点是( )。(2分)


A.可以随机访问任一结点


B.占用连续的存储空间


C.可以通过下标对链表进行直接访问


D.插入删除元素的操作不需要移动元素结点


28. 设链表中的结点是 Node 类型的类,且有 Node p;为了申请一个新结点,并由 p 指向该结点,可用以下 Java 语句( )。(2分)


A. p=new Node();


B. p=new Node(*);


C.p=(NODE )malloc(sizeof(p));


D.p=(NODE *)malloc(sizeof(p));


29. 设顺序存储的线性表长度为 n,对于插入操作,设插入位置是等概率的,则插入一个元素平均移动元素的次数为( )。(2分)


A.n/2


B.n


C.n-1


D.n-i+1


30. 设顺序存储的线性表长度为 n,对于删除操作,设删除位置是等概率的,则删除一个元素平均移动元素的次数为( )。(2分)


A.(n-1)/2


B.n


C.2n


D.n-i


31. 设顺序存储的线性表长度为 n,要删除第 i(0<=i<=n-1)个元素,按课本的算法,当 i=( )时,移动元素的次数为 3。(2分)


A.3 (第n位置,下标为n-1,移动0步)


B.n/2 (第n-1位置,下标为n-2,移动1步)


C.n-4  (第n-2位置,下标为n-3,移动2步)


D.4 (第n-3位置,下标为n-4,移动3步)


32. 设顺序存储的线性长度为 n,要在第 i(0<=i<=n)个元素之前插入一个新元素,按课本的算法当 i= ( )时,移动元素次数为 2。(2分)


A.n/2 (n-1元素的前面插入新元素,表示n元素位置为空,且需要移动1次。)


B.n (n-2元素的前面插入新元素,表示n和n-1都是空,且需要移动2次)


C.1


D.n-2


33. 设有一个长度为 n 的顺序表,要删除第 i(0<=i<=n-1)个元素,按照课本算法,需移动元素的个数为( )。(2分)


A.n-i+1 i=n-1 -->0


B.n-i i=n-2 -->1


C.n-i-1 i=0 -->n-1


D.i


34. 下述各线性结构中可以随机访问的是( )。(2分)



A. 单向链表


B. 双向链表


C. 单向循环链表


D. 顺序表


35. 线性表采用链式存储时,其地址( )。(2分)


A.一定是不连续的


B.必须是连续的


C.可以连续也可以不连续


D.部分地址必须是连续的


36. 在一个单链表中,p、q 分别指向表中两个相邻的结点,且 q 所指结点是 p 所指结点的直接后继,现要删除 q 所指结点,可用的语句是( )。(2分)




A.p=q.getNext();


B.p.setNext(q);


C.p.setNext(q.getNext());        p.next = q.next;


D.q.setNext(NULL);


37. 在一个单链表中 p 所指结点之后插入一个 s 所指的结点时,可执行( )。(2分)




A.p.setNext(s); s.setNext(p.getNext());


B.p,setNext(s.getNext());


C.p=s.getNext();


D.s.setNext(p.getNext()); p.setNext(s); s.next = p.next;     p.next = s;


38. 按照教材算法,在一个长度为 n 的顺序表中为了删除位序号为 5 的元素,从前到后依次移动了 15 个元素。则原顺序表的长度为( )。(2分)


A. 21  6 + 15 = 21


B. 20


C. 19


D. 25


39. 针对线性表,在存储后如果最常用的操作是取第 i 个结点及其前驱,则采用( )存储方式最节省时间。(2分)


A.单链表 读取的时间复杂度O(n)


B.双链表   读取的时间复杂度O(n)


C.顺序表   读取的时间复杂度O(1)


D.单循环链表 读取的时间复杂度O(n)


40. 假设在顺序表中,每一个数据元素所占的存储单元的数目为 4,且第一个数据元素的存储地址为 100,则位序号是 7 的数据元素的存储地址是:( )。(2分)


A.106


B.107


C.124


D.128 100 + 4*7 = 128


答案:

       C A B A A B A B C C D A  A  A C D C D C C D A C D


相关文章
|
3月前
|
算法
数据结构和算法学习记录——时间复杂度、空间复杂度相关练习题
数据结构和算法学习记录——时间复杂度、空间复杂度相关练习题
31 2
|
存储 算法
数据结构练习题——树和二叉树(算法设计题)
以二叉链表作为二叉树的存储结构,编写以下算法: (1)统计二叉树的叶结点个数。 [题目分析]如果二叉树为空,返回0,如果二叉树不为空且左右子树为空,返回1,如果二叉树不为空,且左右子树不同时为空,返回左子树中叶子节点个数加上右子树中叶子节点个数。 [算法描述]
235 0
|
11月前
|
算法 C语言 索引
【数据结构】“单链表”的练习题(二)
文章目录 链表的回文结构 160.相交链表 141.环形链表(LeetCode) leetcode142.环形链|| LeetCode138.复制带随机指针的链表
|
11月前
|
算法 C语言
【数据结构】“单链表”的练习题(一)
文章目录 876.链表的中间节点 203.移除链表元素 牛客题---链表中倒数第k个结点 反转链表 cm11-链表分割 876.链表的中间节点
【数据结构】时间复杂度---OJ练习题
【数据结构】时间复杂度---OJ练习题
82 0
|
存储 算法
数据结构练习题——图(算法设计题)
(1)分别以邻接矩阵和邻接表作为存储结构,实现以下图的基本操作: ① 增加一个新顶点v,InsertVex(G, v); ② 删除顶点v及其相关的边,DeleteVex(G, v); ③ 增加一条边<v,w>,InsertArc(G, v, w); ④ 删除一条边<v,w>,DeleteArc(G, v, w)。 [算法描述] 假设图G为有向无权图,以邻接矩阵作为存储结构四个算法分别如下: ① 增加一个新顶点v
531 0
|
算法 C语言
【C语言入门数据结构】时间复杂度和空间复杂度练习题
时间复杂度和空间复杂度练习题深入理解
368 0
【C语言入门数据结构】时间复杂度和空间复杂度练习题
|
人工智能
位查询【 openjudge数据结构课程练习题】
/*======================================================= 位查询 http://dsalgo.openjudge.cn/linearlists/3/ 总时间限制:5000ms 内存限制: 65536kB 描述 给出N个范围在[0, 65535]的整数,编程支持以下的操作: (1)修改操作:C d,所有的数都增加d。
831 0
|
2天前
|
存储