【链表】练习题

 


 


 

带头结点单向链表的判空条件是head.next==null;

带头结点的单向循环链表的判空条件是head.next==head;






线性表一般有两种存储形式,一种是基于顺序表的存储,一种是基于链表的存储。采用顺序表存储,则必须占用一片连续的内存空间,逻辑上相邻的元素,物理存储位置上也相邻。采用链表存储,则逻辑上相邻的两个元素,物理位置上不一定相邻。采用顺序表的存储,便于随机的存取,但是插入和删除比较耗时。采用链式存储,便于插入和删除,无法随机的存取。 


数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成 


 


链接存储结构是在计算机中用一组任意的存储单元存储线性表的数据元素。

链式存储结构特点:
1、比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。
2、逻辑上相邻的节点物理上不必相邻。
3、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。
4、查找结点时链式存储要比顺序存储慢。
5、每个结点是由数据域和指针域组成。




1、带头结点单链表:head->next==NULL

2、带头结点循环链表:head->next==head

3、不带头结点单链表:head==NULL


 

需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结__牛客网 (nowcoder.com)


分别是:55,64,46,10. H(K)= K%9,表示除以9的余数。由于地址重叠造成冲突,所以散列存储时,通常还要有解决冲突的办法,如线性探查法等等。 

对于线性表(7,34,55,25,64,46,20,10)进_吉比特笔试题_牛客网 (nowcoder.com)


单链表的按升序排列,其中L指向头结点,写一个函数,若star_顺丰集团笔试题_牛客网 (nowcoder.com)


带头指针 L 的双向循环链表中,指针 p 指向双向循环链表的_牛客笔试题_牛客网 (nowcoder.com)


 在循环双链表的 p 所指的结点之前插入 s 所指结点的操作是__牛客网 (nowcoder.com)


下列叙述中,正确的是()__牛客网 (nowcoder.com)


“存取任一指定序号”最好的方法是实现“随机存取”,则可采用顺序表。并且,因为插入和删除操作都是在最后进行的,所以无需大量移动数据元素 

若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插__牛客网 (nowcoder.com)


【分析】

A选项 :栈顶的下一个节点指向s,原栈中数据丢失。错误

B选项 :相当于把s放到了top节点后当作第二节点。错误

C选项 :s的link指向原top,新的top指向s。正确

D选项 :把s放到头节点之前,再更新头节点为原第二节点,s和原top丢失。错误

 设链式栈中结点的结构为(data ,link),且top是指__牛客网 (nowcoder.com)


下列叙述哪些是对的?_阿里巴巴笔试题_牛客网 (nowcoder.com)


以链接方式存储的线性表(X1、X2、...、Xn),当访问第__牛客网 (nowcoder.com)


对顺序表来说,删除第一个元素就需要后续元素都向前移动一个位置。

每删除一次都需要移动大量元素,因此不宜采用。

若频繁删除某线性表的第1个元素,则不宜采用以下哪种存储方式_阿里巴巴笔试题_牛客网 (nowcoder.com)


关于链表,正确的是()_顺丰集团笔试题_牛客网 (nowcoder.com)


 
当前结点的next存放的是下一个结点的位置。 要删除一个结点,需要把保存当前结点位置的next用保存下一个结点的next替换,就可以删除了 要删除的结点在p结点之后,p-next存放的是要删除结点的位置,p-next-next存放的是下一个结点的位置,所以使用p-next=p-next-next删除 

已知L是带头节点的单链表,节点P既不是头节点(第一个节点),__牛客网 (nowcoder.com)


因为有100个节点,可以先假设先都在节点1,B经过33步刚刚到达节点100,而A在34,第34步B到达节点3,A在35,所以接下来是3+3n=35+n,所以n=16,所以总共=34+16=50 

一个长度为100的循环链表,指针A和指针B都指向了链表中的同_远景笔试题_牛客网 (nowcoder.com)


 在p指针所指向的结点之后插入s指针所指结点的操作应为?__牛客网 (nowcoder.com)


当静态链表采用数组实现时,插入与删除操作仍需移动元素,这种说__牛客网 (nowcoder.com)


广义表运算式 Tail(((a,b),(c,d)))的操作结__牛客网 (nowcoder.com)

广义表运算“ TAIL[((a,b),(c,d))]”的结果是什么?_百度知道 (baidu.com)


时间复杂度指的是一个数量级的概念,i只是单纯的一个位置

在这里可以计算访问某一节点的平均时间,访问第一个时间为1,第二个时间为2、、、以此类推,访问第n个的时间为n,求得平均时间,(1+n)*n/2n,这个时间的数量级为O(n)

 线性表(a1,a2,…,an)以链表方式存储时,访问第i位置__牛客网 (nowcoder.com)


将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序_阿里巴巴笔试题_牛客网 (nowcoder.com)


现有线性表(16,37, 43,55, 73,97,110,_小米集团笔试题_牛客网 (nowcoder.com)


 以下关于单向链表说法正确的是__牛客网 (nowcoder.com)


 线索二叉链表是利用( )域存储后继结点的地址。__牛客网 (nowcoder.com)


在双向链表存储结构中,删除p所指的结点时需修改指针()?__牛客网 (nowcoder.com)


队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。

循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针。

 下列叙述中正确的是?_阿里巴巴笔试题_牛客网 (nowcoder.com)


如果链表数据是无序的,则单向搜索与双向搜索平均速度相同

如果链表是有序的,而要搜索的数据距离最小值(最大值)较近,这种情况下双向搜索平均速度更快。

因此双向搜索更稳定,方差更小

 关于双链表的搜索给定元素操作的说法正确的是?_阿里巴巴笔试题_牛客网 (nowcoder.com)


Arraylist的内存结构是数组,当超出数组大小时创建一个新的数组,吧原数组中元素拷贝过去。其本质是顺序存储的线性表,插入和删除操作会引发后续元素移动,效率低,但是随机访问效率高

LinkedList的内存结构是用双向链表存储的,链式存储结构插入和删除效率高,不需要移动。但是随机访问效率低,需要从头开始向后依次访问


ArrayList和LinkedList在性能上各 有优缺点,都有各自所适用的地方,总的说来可以描述如下:   1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的.对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象.   2.在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的 3.LinkedList不 支持高效的随机元素访问.   4.ArrayList的空 间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间   可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了. 

ArrayList和LinkList的描述,下面说法错误的是_搜狐笔试题_牛客网 (nowcoder.com)


判断链表有没有环,可以用快慢指针来实现,如果两指针相遇,则表示有环。

判断单链表有没有环的算法中,至少需要几个指针?_腾讯笔试题_牛客网 (nowcoder.com)


以下结构类型可用来构造链表的是()__牛客网 (nowcoder.com) 


设有100个元素的有序表,采用折半查找方法,成功时最大的比较__牛客网 (nowcoder.com) 


线性表的第一个元素没有前驱,最后一个元素没有后继 

双循环链表中,任意一结点的后继指针均指向其逻辑后继。__牛客网 (nowcoder.com)


最好情况是移动0个,最坏情况移动n个,平均情况n/2个 

 在等概率情况下,顺序表的插入操作要移动______结点。__牛客网 (nowcoder.com)


数组插入、删除需要移动数组元素,平均移动n/2

哈希表难以实现顺序遍历

队列插入删除效率低下

假设要存储一个数据集,数据维持有序,对其的操作只有插入、删除_人人网笔试题_牛客网 (nowcoder.com) 


对线性表进行折半查找时,要求线性表必须()__牛客网 (nowcoder.com) 


n个结点的二叉链表共有2n个链域,除了根节点以外,其他每个节点都被一个链域所指向,因此用到的链域为n-1个,

即空链域个数为:2n - ( n-1) = n+1个

在有n个节点的二叉链表中,值为空的链域的个数为()__牛客网 (nowcoder.com)


广义表A=(()x, (a ,b)), (x,(a,b),y__牛客网 (nowcoder.com) 


非空的双向循环链表中任何结点的前驱指针均不为空。( )__牛客网 (nowcoder.com) 


 

链表只能顺序查找

定位一个元素的时间为O(N),删除一个元素的时间为O(1)

在有序双向链表中定位删除一个元素的平均时间复杂度为?_搜狐笔试题_牛客网 (nowcoder.com)


以下关于链式存储结构的叙述中,( )是不正确的。__牛客网 (nowcoder.com) 


 首地址100+(5-1)*2=108

一个顺序表第一个元素的存储地址是100,每个元素占两个存储单__牛客网 (nowcoder.com)


  • 广义表是由n个元素组成的序列,n是广义表的长度。
  • 广义表的深度: 广义表中括号的最大层数叫广义表的深度。

F=(a,F)的长度为2,由于属于递归表,所以深度为无穷,F相当于一个无限的表(a,(a,(a,(...))))。

判断下列说法是否正确:F=(a,F)是一个递归的广义表,它的__牛客网 (nowcoder.com)


下列关于链表的描述中正确的是:__牛客网 (nowcoder.com) 


一个非空广义表的表头()__牛客网 (nowcoder.com)




 选项A:时间复杂度顺序表o(n),链表o(1)

选项B:时间复杂度顺序表o(n),链表o(1)

选项C:时间复杂度顺序表o(1),链表o(n)

选项D:时间复杂度顺序表o(n),链表o(n)

 在以下哪种操作中,使用顺序表比链表好?__牛客网 (nowcoder.com)

 


以下哪种操作在链表中进行比在顺序表中进行效率高?__牛客网 (nowcoder.com)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值