复习题1.ppt
《复习题1.ppt》由会员分享,可在线阅读,更多相关《复习题1.ppt(14页珍藏版)》请在冰豆网上搜索。
复习题,1线性表是具有n个()的有限序列。
a.表元素b.字符c.数据元素d.数据项e.信息项解答:
数据元素是数据的基本单位,数据元素可由若干个数据项组成;故选c2.线形表的静态链表结构与顺序存储结构相比优点是().a.所有的操作算法实现简单b.便于随机存取c.便于插入和删除d.便于利用零散的存储器空间解答:
选c3.若长度为n的线形表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为()a.O(n)b.O
(1)c.O(n)d.O(n2)解答:
在第i个位置上插入新元素需要从最后一个元素开始后移直到第i个元素后移为止,后移元素的次数为n-i+1;也即时间复杂度为O(n),故选c,4.
(1)静态链表既有顺序存储的优点,又有动态链表的优点。
所以,它存取表中第i个元素的时间与i无关;
(2)静态链表既有能容纳元素个数的最大数在定义时就确定了,以后不能增加;(3)静态链表与动态链表在元素的插入、删除上类似,不需要做元素的移动。
以上错误的是().a.
(1),
(2)b.
(1)c.
(1),
(2),(3)d.
(2)解答:
静态链表中存取表中第i个元素必然先找到第i个元素的位置,即与i有关;静态链表由于是用一维数组描述的链表,故其最大容量在定义时就确定了;静态链表在元素的插入、删除与动态链表类似;故选b5.将下图所示的s所指结点加到p所指结点之后,其语句应为().a.s-next=p+1;p-next=s;b.(*p).next=s;(*s).next=(*p).next;c.s-next=p-next;p-next=s-next;d.s-next=p-next;p-next=s;解答:
a错在s-next=pl,因p+l作为指向后继结点的地址是错误的;b的错误是前后两个语句顺序颠倒了;c错在p-next=s-next,因p-next与s-next都指向p的原后继结点,这导致了结点并未插入链表中;因此,只有d正确;故选d,6.在双向链表存储结构中,删除p所指的结点时须修改指针().a.p-next-prior=p-prior;p-prior-next=p-next;b.p-next=p-next-next;p-next-prior=p;c.p-prior-next=p;p-prior=p-prior-prior;d.p-prior=p-next-next;p-next=p-prior-prior;解答:
由下图可知应选a.7.在双向链表存储结构中,删除p所指的结点时必须修改指针().a.p-next=q;q-prior=p;p-next-prior=q;q-next=q;b.p-next=q;p-next-prior=q;q-prior=p;q-next=p-next;c.q-prior=p;q-next=p-next;p-next-prior=q;p-next=q;d.q-next=p-next;q-prior=p;p-next=q;p-next=q;解答:
如下图所示,在双向链表中插入一个结点的要点有二:
(l)先修改待插入结点q的前趋和后继指针;
(2)其次,修改p的后继结点的前趋指针(prior),然后再修改p的后继指针(next);这两个操作的顺序不能颠倒:
由此知应选c。
8.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。
a.nb.2n-1c.2nd.n-1解答:
当一个表的最小元素大于另一个表的最大元素时比较次数为最少,共需n次;因此选a9.在一个长度为n的顺序表中,在第i个元素(1in+l)之前插入一个新元素时须向后移动()个元素。
a.n-1b.n-i+1c.n-i-1d.i解答:
由题3知为n-i+1次,即选b10线性表L=(a1,a2,an),下列说法正确的是()a.每个元素都有一个直接前驱和一个直接后继b.线性表中至少要有一个元素c.表中诸元素的排列顺序必须是由小到大或由大到小d.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继解答:
选d11对单链表表示法,以下说法错误的是()a.数据域用于存储线性表的一个数据元素b.指针域(或链域)用于存放一个指向本结点所含数据元素的直接后继所在结点的指针c.所有数据通过指针的链接而组织成单链表d.NULL称为空指针,它不指向任何结点只起标志作用解答:
c错,应为所有结点(包含数据和指针两项)通过指针的链接而组织成单链表,故选c,12若给定有n个元素的向量,则建立一个有序单向链表的时间复杂性的量级是()a.O(l)b.O(n)c.O(n2)d.O(nlog2n)解答:
单纯建立单链表的时间复杂度为O(n),而建立一个有序单链表还涉及查找插入到其正确位置,故时间度复杂度为0(n2);故选c13以下说法正确的是()a顺序存储方式的优点是存储密度大且插入、删除运算效率高b链表的每个结点中都恰好包含一个指针c线性表的顺序存储结构优于链式存储结构d顺序存储结构属于静态结构而链式结构属于动态结构解答:
a错,顺序存储方式的删除和插入运算效率低;b错,双向链表每个结点有两个指针;c错,顺序与链式这两种存储结构各有其优、缺点;d对,故选d14以下说法错误的是()a对循环链表来说,从表中任一结点出发都能通过前后移操作扫描整个循环链表b对单链表来说,只有从头结点开始才能扫描表中全部结点c双链表的特点是找结点的前趋和后继都很容易d对双链表中来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针中解答:
a错,对循环链表来说,从表中任一结点出发都能通过后移操作扫描整个循环链表;因无前趋指针,故不能进行前移操作;因此选a,16某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
(南开大学2000年研究生试题)a单链表b仅有头指针的单循环链表c双链表d仅有尾指针的单循环链表解答:
选d17单链表的主要优点是()。
(陕西省1997年自考题)a便于随机查询b存储密度高c逻辑上相邻的元素在物理上也是相邻的d插入和删除比较方便解答:
选d18非空的循环单链表head的尾结点*P满足()。
a.p-next=headb.p-nextNULLc.p=NULLd.p=head解答:
选a19对一个具有n个元素的线性表,建立其单链表的时间复杂度为()。
a.O(n)b.O(l)c.O(n2)d.O(log2n)解答:
选a20线性表采用链式存储时,其地址a必须连续b一定不连续c部分连续d连续与否均可解答:
选d,21对于一个线性表,既要求能够较快地进行插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该()a以顺序方式存储b以链接方式存储c以散列方式存储d以上均可解答:
选b22循环链表的主要优点是()a不再需要头指针b已知某结点位置后能容易找到其直接前趋c在进行插入、删除运算时能保证链表不断开d从表中任一结点出发都能扫描整个链表解答:
选d23若一线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
a顺序表b单链表c双链表d单循环链表解答:
选a24对顺序表的优缺点,以下说法错误的是()。
a无需为表示结点间的逻辑关系而增加额外的存储空间b可以方便地随机存取表中的任一结点c插入和删除运算较为方便d由于要求占用连续空间,所以存储分配只能预先进行(静态分配)解答:
选c,25.对于一个线性表,既要求能够进行较快的插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该()。
A以顺序方式存储B以链接方式存储C以散列方式存储D以上均可解答:
以散列方式不能反映数据元素之间“前趋”、“后继”的关系;顺序方式在插入和删除时,需要做大量的数据移动;链接方式存储能够达到这一要求。
故选,B。
26.“如果没有提供指针类型的语言,就无法构造链式结构。
”这种说法是()。
A错误的B正确的C不一定,要看描述语言解答:
链式存储结构不一定要通过指针来实现,可以通过静态链来实现。
故选择A。
27线性表采用链式存储结构时,要求内存中可用存储单元的地址()A必须是连续的B部分地址必须是连续的C一定是不连续的D连续或不连续都可以解答:
选d28带头结点的单链表为空的判定条件是()A.head=NULLB.head-next=NULLC.head-next=headD.head!
=NULL解答:
选b29不带头结点的单链表head为空的判定条件是()A.head=NULLB.head-next=NULLC.head-next=headD.head!
=NULL解答:
选a,31非空的循环单链表head的尾结点P满足()A.p-next=NULLB.p=NULLC.p-next=headD.p=head解答:
选c32在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()A.O(l)B.O(n)C.O(n2)D.O(nlog2n)解答:
选b33在一个单链表中,若删除p所指结点的后继结点,则执行()A.p-next=p-next-next;B.p=p-next;p-next=p-next-next;C.p-next=p-next;D.p=p-next-next;解答:
选a34在一个单链表中,若在p所指结点之后插入s所指结点,则执行()A.s-next=p;p-next=s;B.s-next=p-next;p-next=s;C.s-next=p-next;p=s;D.p-next=s;s-next=p;解答:
b35在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行()。
A.s-next=p-next;p-next=s;B.p-next=s-next;s-next=p;C.q-next=s;s-next=p;D.p-next=s;s-next=q;解答:
c,36假设双链表结点的类型如下:
typedefstructlinknodeintdata;/数据域structlinknode*llink;/指向前趋结点的指针域structlinknode*rlink;/指向后继结点的指针域bnode现将一个q所指新结点作为非空双向链表中的p所指结点的前趋结点插入到该双链表中,能正确完成此要求的语句段是()。
A.q-rlink=p;q-llink=p-llink;p-llink=q;p-llink-rlink=q;B.p-llink=q;q-rlink=p;p-llink-rlink=q;q-llink=p-llink;C.q-llink=p-rlink;q-rlink=p;p-link-rlink=q;p-llink=q;D以上都不对解答:
c37如上题结点结构,如在此非空循环双向链表的结点p之后插入结点s的操作序列是()。
A.p-rlink=s;s-llink=p;p-rlink-llink=s;s-rlink=p-rlink;B.p-rlink=s;p-rlink-llink=s;s-llink=p;s-rlink=p-rlink;C.s-llink=p;s-rlink=p-rlink;p-rllink=s;p-rlink-llink=s;D.s-llink=p;s-rlink=p-rlink;p-rlink-llink=s;p-rlink=s;解答:
选d,38.用链表表示线性表的优点是()。
(A)便于随机存取(B)花费的存储空间较顺序存储少(C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同解答:
c39某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用()存储方式最节省运算时间。
(A)单链表(B)双链表(C)单循环链表(D)带头结点的双循环链表解答:
选c循环链表的主要优点是