数据结构:链表-笔记-面试题

1、下面的描述错误的是
正确答案: C 你的答案: C (正确)
栈只能在一端进行入栈和出栈操作
队列在一端进行入队操作,另一端进行出队操作
栈和队列都是“先进后出”
链表的各个元素在内存中的保持位置可以是不连续的
解析:栈是先进后出,队列是先进先出。

2、在单链表中 , 给定任一结点的地址 p , 则可用下述语句将新结点 s 插入结点 p 的后面 : p->next = s; s->next = p->next,这样的说法正确吗?
正确答案: B 你的答案: B (正确)
正确
不正确
解析:顺序反了,应该先指出需要插入的数。

3、以下数据结构中哪一个是非线性结构? ( )

正确答案: D 你的答案: D (正确)
队列

线性表
二叉树

4、在一个单链表 HL 中,若要在当前由指针 p 指向的结点后面插入一个由 q 指向的结点,则执行如下 ( ) 语句序列。

正确答案: D 你的答案: D (正确)
p=q; p->next=q;
p->next=q; q->next=p;
p->next=q->next; p=q;
q->next=p->next; p->next=q;

解析:先指出需要插入的数的指针,然后在指明插入数的前一个数的指针。

5、下列描述的不是链表的优点是( )
正确答案: C 你的答案: C (正确)
逻辑上相邻的结点物理上不必邻接
插进、删除运算操纵方便,不必移动结点
所需存储空间比线性表节省
无需事先估计存储空间的大小
解析:链表所占据的存储空间比线性表的大。

6、栈通常采用的两种存储结构是什么?
正确答案: A 你的答案: D (错误)
顺序存储结构和链表存储结构
散列方式和索引方式
链表存储结构和数组
线性存储结构和非线性存储结构
解析;栈也有两种存储方法:一是顺序栈;二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元依次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置。由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。
ps:有同学说C是正确的,个人认为数组只是顺序存储结构中的一种,而不能代替所有的顺序存储结构,有点以偏概全的感觉,有说的不好的地方,请多多指教:)

9、为了很方便的插入和删除数据,可以使用双向链表存放数据()
正确答案: A 你的答案: A (正确)

10、链表不具有的特点是()

正确答案: B 你的答案: B (正确)
插入、删除不需要移动元素
可随机访问任一元素
不必事先估计存储空间
所需空间与线性长度成正比

11、采用线性链表表示一个向量时,要求占用的存储空间地址()。
正确答案: D 你的答案: D (正确)
必须是连续的
部分地址必须是连续的
一定是不连续的
可连续可不连续

12、
双向链表可随机访问任一结点,这样的说法正确吗?
正确答案: B 你的答案: B (正确)
正确
不正确
解析:顺序表:随机访问;
链表:顺序访问。

13、对稀疏矩阵进行压缩存储,常用的两种方法是( )。
正确答案: B 你的答案: B (正确)
三元组和散列表
三元组和十字链表
三角矩阵和对角矩阵
对角矩阵和十字链表

14、用邻接表表示图进行深度优先遍历时,通常是采用()来实现算法的。
正确答案: A 你的答案: D (错误)

队列


解析:深度用栈,广度遍历用队列

15、当静态链表采用数组实现时,插入与删除操作仍需移动元素,这种说法()
正确答案: B 你的答案: B (正确)
正确
错误
解析:静态链表采用数组实现链表的存储,用空间换取时间,删除与插入需要改的是游标

16、单循环链表的主要优点是()。
正确答案: A 你的答案: A (正确)
从表中任一结点出发都能扫描到整个链表
不再需要头指针了
在进行插入、删除操作时,能更好地保证链表不断开
已知某个结点的位置后,能够容易找到它的直接前趋

17、以下结构类型可用来构造链表的是()
正确答案: B 你的答案: A (错误)
struct aa{ int a;int * b;};
struct bb{ int a;bb * b;};
struct cc{ int * a;cc b;};
struct dd{ int * a;aa b;};

18、在表头和表尾都可能有元素被插入的情况下,在单循环链表中设置尾指针比设置头指针好。 ( )
正确答案: A 你的答案: A (正确)
正确
错误
解析:表尾指针更好,表头表尾插入和表头删除时间复杂度都是O(1)

19、设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为()。

正确答案: D 你的答案: D (正确)
p->right=s; s->left=p; p->right->left=s; s->right=p->right;
s->left=p;s->right=p->right;p->right=s; p->right->left=s;
p->right=s; p->right->left=s; s->left=p; s->right=p->right;
s->left=p;s->right=p->right;p->right->left=s; p->right=s;

20、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()
正确答案: C 你的答案: C (正确)
仅修改队头指针
仅修改队尾指针
队头、队尾指针都可能要修改
队头、队尾指针都要修改

21、设链式栈中结点的结构为(data ,link),且top是指向栈顶的指针,若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行( )操作。

正确答案: C 你的答案: C (正确)
top->link=s;
s->link=top->link; top->link=s;
s->link=top; top=s;
s->link=top; top=top->link;

22、在一个长度为n的单链表的第i(0<=i<n)个元素后面插入一个元素时,需要向后移动(  )个元素。

正确答案: D 你的答案: B (错误)
n-i
n-i+1
n-i-1
0
解析:是单链表。

23、单链表的每个节点中包括一个指针next,它指向该节点的后继节点。现要将指针q指向的新节点插入到指针p指向的单链表节点之后,下面的操作序列中哪一个是正确的?
正确答案: C 你的答案: B (错误)
q=p->gt;next;p->gt;next=q->gt;next;
p->gt;next=q->gt;next;q=p->gt;next;
g->gt;next=p->gt;next;p->gt;next=q;
p->gt;next=q;q->gt;next=q->gt;next;
解析:先从插入的数入手。

24、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 。
正确答案: B 你的答案: A (错误)
单链表
静态链表
线性链表
顺序存储结构

25、以下与数据的存储结构无关的术语是()
正确答案: D 你的答案: C (错误)
循环队列
链表
哈希表

26、关于双链表的搜索给定元素操作的说法正确的是?
正确答案: B 你的答案: C (错误)
从两个方向搜索双链表,比从一个方向搜索双链表的速度慢
从两个方向搜索双链表,比从一个方向搜索双链表的方差要小
从两个方向搜索双链表,比从一个方向搜索双链表速度要快
以上说法都不正确

27、在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行?
正确答案: B 你的答案: B (正确)
s->next=p ; p->next=s ;
s->next=p->next; p->next=s;
s->next=p->next ; p=s;
p->next=s ; s->next=p;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椒椒。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值