铜仁市论坛

注册

 

发新话题 回复该主题

考研数据结构每日一题day7 [复制链接]

1#

考点所在范围:第二章线性表,链式存储

线性表是考研命题的重点。这类算法题实现起来比较容易而且代码量较少,但却要求具有最佳的性能(时间复杂度和空间复杂度),才能获得满分。

(1)静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关

(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了以后不能增加

(3)静态链表与动态链表在元素的插入、删除上类似、不需做元素的移动

知识点扩展:

几种链表的定义

1.单循环链表:是指通过一组任意的存储单元来存储线性表中的元素。为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针。

缺点:只有一个指向其后继的指针,使得单链表只能从头结点依次顺序地向后遍历。要访问某个结点的前驱结点(插入、删除操作需要)时,只能从头开始遍历,访问后继结点的时间复杂度为O(1),访问前驱结点的时间复杂度O(n)

2.双链表:仅在单链表的结点中增加了一个指向其前驱的prior指针,因此在双链表中执行按值查找和按位查找的操作与单链表相同。但在插入和删除的实现上,与单链表有较大的不同。

引入目的:克服单链表的缺点以方便查找某个结点的前驱元素。

3.循环单链表:循环单链表和单链表的区别在于,表中最后一个结点的指针不是NULL,而改为指向头结点,从而整个链表连成一个环。

优点:正因为循环单链表是一个“环”,因此在任何一个位置上的插入和删除操作都是等价的,无须判断删除位置是否是表尾结点(单链表删除表尾结点和其他结点有区别)。

4.循环双链表:由循环单链表不难推出循环双链表,不同的是在循环双链表中,头结点的prior指针还要指向表尾结点。

5.静态链表:静态链表借助数组来描述线性表的链式存储结构,结点也有数据域data和指针域next,与前面链表的指针不同的是,这里的指针是结点的相对地址(数组下标),又称游标。正因为是借助数组实现的,因此和顺序表一样,静态链表也要预先分配一块连续的内存地址。

缺点:易扩展性差,没有单链表用起来方便

优点:在不支持指针的语言中是一种巧妙的设计方法(如Basic语言)

答案解析:

此题答案:B,此题用排除法最快,确定(2)是静态链表特性,因此只能选B

往期推荐

考研数据结构每日一题-day1

考研数据结构每日一题-day2

考研数据结构每日一题-day3

考研数据结构每日一题-day4

考研数据结构每日一题-day5

考研数据结构每日一题-day6

—END—我就知道你“在看”

程序员的这些事

分享 转发
TOP
发新话题 回复该主题