数据结构第章典型例题解析.doc
《数据结构第章典型例题解析.doc》由会员分享,可在线阅读,更多相关《数据结构第章典型例题解析.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构第2章典型例题解析第2章 线 性 表典型例题解析一、选择题1线性表是具有n个(n0) 的有限序列。A表元素 B字符 C数据元素 D数据项【分析】线性表是具有相同数据类型的n(n0)个数据元素的有限序列,通常记为(a1,a2,an),其中n为表长,n=0时称为空表。【答案】C2顺序存储结构的优点是 。A存储密度大 B插入运算方便C删除运算方便 D可方便地用于各种逻辑结构的存储表示【分析】顺序存储结构是采用一组地址连续的存储单元来依次存放数据元素,数据元素的逻辑顺序和物理次序一致。因此,其存储密度大。【答案】A3带头结点的单链表head为空的判断条件是 。Ahead=NULL Bhead-
2、next=NULLChead-next=head Dhead!=NULL【分析】链表为空时,头结点的指针域为空。【答案】B4若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用 存储方式最节省运算时间。A单链表 B仅有头指针的单循环链表 C双链表 D仅有尾指针的单循环链表【分析】根据题意要求,该线性表的存储应能够很方便地找到线性表的第一个元素和最后一个元素,A和B都能很方便地通过头指针找到线性表的第一个元素,却要经过所有元素才能找到最后一个元素;选项C双链表若存为双向循环链表,则能很方便地找到线性表的第一个元素和最后一个元素,但存储效率要低些,插入和删除操作也略微复
3、杂;选项D可通过尾指针直接找到线性表的最后一个元素,通过线性表的最后一个元素的循环指针就能很方便地找到第一个元素。【答案】D5若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用 存储方式最节省时间。A顺序表 B双链表C带头结点的双循环链表 D单循环链表【分析】某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算。因此不需要移动线性表种元素的位置。根据题意要求,该线性表的存储应能够很方便地找到线性表的任一指定序号的元素和最后一个元素,顺序表是由地址连续的向量实现的,因此具有按序号随机访问的特点。链表需要通过指针才能找到线性表的莫以指定序号的元素,需
4、要一定的时间开销。【答案】A6设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用 最节省时间。A. 单链表 B.单循环链表C. 带尾指针的单循环链表 D.带头结点的双循环链表【分析】根据题意要求,该线性表的存储应能够很方便地找到线性表的最后一个元素和最后一个元素的前驱元素,A和B都不能很方便地通过头指针找到线性表的第一个元素;选项C可以方便地找到最后一个元素,单不能很快地找到其前驱元素;选项D为双向循环链表,可以很方便地找到线性表的最后一个元素,通过其前驱指针,从而可以方便地找到其前驱元素。【答案】D7静态链表中指针表示的是 。A 内存地址 B数组下标 C下一元素地址 D左、右孩子地址
5、【分析】静态链表采用的是链式方式存储线性表,以数组方式存储链表的数据,指针域存储的是该结点逻辑上的后继结点的相对地址(即在数组中的下标),也称为静态指针。【答案】B8链表不具有的特点是 。A插入、删除不需要移动元素 B可随机访问任一元素 C不必事先估计存储空间 D所需空间与线性长度成正比【分析】链表是通过一组任意的存储单元来存储线性表中的数据元素的,为建立起数据元素之间的线性关系,对每个数据元素,除了存放数据元素自身的信息之外,还需要和存放其后继元素所在的存储单元的地址。链表不具有按序号随机访问第i个元素的特点,必须通过标识链表的头指针(或尾指针)“顺藤摸瓜”才能找到第i个结点。【答案】B9线
6、性表的静态链表存储结构与顺序存储结构相比优点是 。A所有的操作算法简单 B便于插入和删除C便于利用零散的存储器空间 D便于随机存取【分析】静态链表采用的是链式方式存储线性表,因此其具有链式存储的特点。【答案】B10若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为 。AO(log2n) BO(1)CO(n) DO(n2)【分析】在第i个位置上插入新元素需要从最后一个元素开始后移直到第i个元素后移为止,后移元素的次数为n-i+1,即时间复杂度为O(n)。【答案】C11线性表(a1,a2,an)以链接方式存储时,访问第i个位置元素的时间复杂性为 。AO(i)BO(1
7、)CO(n) DO(i-1)【分析】线性表以链接方式存储时,访问第i个位置元素从第一个元素开始移动指针到第i个元素,移动指针的次数为n-i+1,即时间复杂度为O(n)。【答案】C12将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是 。An B2n-1 C2n Dn-1【分析】当一个表的最小元素大于另一个表的最大元素时比较次数为最少,共需n次。【答案】A13非空的循环单链表head的尾结点p满足 。Ap-next=headBp-next=NULLCp=NULLDp=head【分析】非空的循环单链表head的尾结点的后继指针指向链表的头结点。【答案】A14在双循环链表p所指结点之后插
8、入s所指结点的操作是 。Ap-next=s; s-prior=p; p-next-prior=s; s-prior=p-next;Bp-next=s; p-next-prior=s; s-prior=p; s-next=p-next;Cs-prior=p; s-next=p-next; p-next=s; p-next-prior=s;Ds-prior=p; s-next=p-next; p-next-prior=s; p-next=s; 【分析】由于要将s所指结点插入到p所指结点之后,p结点为s结点的前驱,s结点为p结点的新后继,而结点p的原后继结点为结点s的后继结点,结点s为结点p的原后继
9、结点的前驱结点s。在选项A、B和C中均是先执行操作p-next=s,就是修改了结点p的后继结点s,然后再执行操作p-next-prior=s,因此,无法使得结点s为结点p的原后继结点的前驱结点,这样的赋值会使s结点为其自身的前驱。应先执行操作p-next-prior=s,再执行操作p-next=s。【答案】D15在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q结点和p结点之间插入s结点,则执行 。As-next=p-next;p-next=s;Bp-next=s-next;s-next=p;Cq-next=s; s-next=p;Dp-next=s; s-next=q;【分析】由于
10、是将s所指结点插入到q和p所指结点之间,即使其为q所指结点的后继结点,为p所指结点的前驱结点,因此s-next的取值应为p,p-next的取值无需改动,q-next的取值应改为s,故A、B和D均是错误的。【答案】C二、判断题1线性表的特点是每个元素都有一个前驱和一个后继。【分析】线性表是一种逻辑结构,其数据元素属于相同数据类型,之间的关系是线性关系。线性表中除第一个数据元素和最后一个数据元素外,外每个元素都有一个前驱和一个后继。【答案】错误2顺序存储的线性表可以按序号随机存取。【分析】因为顺序表在内存是用地址连续的空间存储的,设a1的存储地址为Loc(a1),每个数据元素占d个存储地址,则第i
11、个数据元素的地址为:Loc(ai)=Loc(a)+(i-1)d 1in这就是说只要知道顺序表首地址和每个数据元素所占地址单元的个数就可求出第i个数据元素的地址来,这也是顺序表具有按数据元素的序号随机存取的特点。【答案】正确3链表中的头结点仅起到标识的作用。【分析】头结点是附加在第一个元素结点之前的一个结点,当该链表表示一个非空的线性表时,头结点的指针域指向第一个元素结点,为空表时,该指针域为空。其作用是为了运算上的方便。【答案】错误4线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。【分析】链表是通过一组任意的存储单元来存储线性表中的数据元素的,为建立起数据元素之间的线性关系,对每
12、个数据元素,除了存放数据元素自身的信息之外,还需要存放其后继元素所在的存储单元的地址。链表中结点的存储空间可以是不连续的,但结点内部的存储空间必须是连续的。【答案】错误5在单链表中和在顺序表中插入一个元素其时间复杂度均为O(n),因此说它们的执行时间是相等的。【分析】大O记法表示时间渐近复杂度,是指一个算法中的时间耗费,往往是问题规模n的函数T(n),当n趋向于无穷大时,T(n)的数量级称为算法的时间渐近复杂度。虽然两种存储结构下的插入操作时间复杂度均为O(n),但由于两者的基本操作不同,因此不能说它们的执行时间是相等的。【答案】错误6所谓静态链表就是一直不发生变化的链表。【分析】静态链表是指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 典型 例题 解析
限制150内