第二章线性表.docx
- 文档编号:30740129
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:11
- 大小:27.23KB
第二章线性表.docx
《第二章线性表.docx》由会员分享,可在线阅读,更多相关《第二章线性表.docx(11页珍藏版)》请在冰豆网上搜索。
第二章线性表
第二章线性表
第2章 线性表 一选择题 1.下述哪一条是顺序存储结构的优点?
【北方交通大学2001一、4】 A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?
【北方交通大学2001一、14】A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个的有限序列。
【清华大学1998一、4】A.表元素 B.字符 C.数据元素 D.数据项 E.信息项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用存储方式最节省时间。
【哈尔滨工业大学2001二、1】 A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用存储方式最节省运算时间。
【南开大学2000一、3】 A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。
A.单链表B.单循环链表C.带尾指针的单循环链表D.带头结点的双循环链表 【合肥工业大学2000一、1】 7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用存储方式最节省运算时间。
【北京理工大学2000一、1】 A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表8.静态链表中指针表示的是.【北京理工大学2001六、2】A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址9.链表不具有的特点是【福州大学1998一、8(2分)】A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比10.下面的叙述不正确的是【南京理工大学1996一、10】A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B.线性表在链式存储时,查找第i个元素的时间同i的值无关 C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比D.线性表在顺序存储时,查找第i个元素的时间同i的值无关 11.线性表的表元存储方式有()和链接两种。
试指出下列各表中使用的是何种存储方式:
表1是()存 储方式;表2是()存储方式;表3是()存储方式;表4是()存储方式。
表左的s指向起始表元。
表1表元编号货号数量表元间联系s→1 618 40 2 2 3 4 5 6 205 103 501 781 910 2 15 20 17 24 3 4 5 6 0 表元编号货号数量表元间联系表2 1 618 40 5 2 205 2 1 3 103 15 4s→ 4 501 20 2 5 781 17 6 6 910 24 3 表元编号货号数量表元间联系表3 1 618 40 5 2 205 2 1s→ 3 103 15 4 4 501 20 0 5 781 17 6 6 910 24 3 表元编号货号数量表元间联系表4 12 1 618 405 2 2 205 210s→ 3 103 1546 4 501 2003 5 781 1761 6 910 2435 供选择的答案:
A.连续B.单向链接C.双向链接D.不连接E.循环链接F.树状G.网状H.随机I.顺序J.顺序循环 【上海海运学院1995二、1】 12.
(1)静态链表既有顺序存储的优点,又有动态链表的优点。
所以,它存取表中第i个元素的时间与i无关。
(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。
(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
以上错误的是【南京理工大学2000一、3】A., B. C.,,(3) D. 13.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为】 A.O(0) B.O
(1) C.O(n) D.O(n2 ) 14.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为。
A.O(n)O(n) B.O(n)O
(1) C.O
(1)O(n) 表中,在p指针所指向的结点前插入一个指针q所指向的新结点,其修改指针的操作是( )。
【北京邮电大学1998二、2】 注:
双向链表的结点结构为(llink,data,rlink)。
供选择的答案:
A.p↑.llink:
=q;q↑.rlink:
=p; p↑.llink↑.rlink:
=q;q↑.llink:
=q; B.p↑.llink:
=q;p↑.llink↑.rlink:
=q;q↑.rlink:
=p; q↑.llink:
=p↑.llink;C.q↑.rlink:
=p;q↑.llink:
=p↑.llink;p↑.llink↑.rlink:
=q;p↑.llink:
=q;D.q↑.llink:
=p↑.llink;q↑.rlink:
=p;p↑.llink:
=q;p↑.llink:
=q;21.在非空双向循环链表中q所指的结点前插入一个p所指的链结点的过程依次为:
rlink(p)←q;llink(p)←llink(q);llink(q)←p; A.rlink(q)←p3.在双向链表指针p的结点前插入一个指针q的结点操作是。
【青岛大学2000五、2】 A.p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q; B.p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;C.q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;D.q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q; 24.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:
。
A.p->next=s;s->next=p->next;B.s->next=p->next;p->next=s;C.p->next=s;p->next=s->next;D.p->next=s->next;p->next=s; 【青岛大学2001五、3】 25.对于一个头指针为head的带头结点的仅起到标识的作用。
( )【南京航空航天大学1997一、1】 2.顺序存储结构的主要缺点是不利于插入或删除操作。
()【南京航空航天大学1997一、2】3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。
( ) 【北京邮电大学1998一、2】 4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。
( ) 【北京邮电大学2002一、2】 5.对任何数据结构链式存储结构一定优于顺序存储结构。
()【南京航空航天大学1997一、3】6.顺序存储方式只能用于存储线性结构。
( ) 【中科院软件所1999六、1-2】【上海海运学院1997一、1】 7.集合与线性表的区别在于是否按关键字排序。
( )【大连海事大学2001一、5(1分)】8.所谓静态链表就是一直不发生变化的链表。
( )【合肥工业大学2000二、1】 9.线性表的特点是每个元素都有一个前驱和一个后继。
( )【合肥工业大学2001二、1】10.取线性表的第i个元素的时间同i的大小有关.( )【南京理工大学1997二、9】11.循环链表不是线性表.( )【南京理工大学1998二、1】 12.线性表只能用顺序存储结构实现。
( )【青岛大学2001四、2】13.线性表就是顺序存储的表。
( )【青岛大学2002一、1】14.为了很方便的插入和删除数据,可以使用双向链表存放数据。
( ) 【上海海运学院1995一、1】【上海海运学院1997一、2】 15.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( ) 【上海海运学院1996一、1】【上海海运学院1999一、1】 16.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
( )【上海海运学院1998一、2】 三、填空 1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_______存储结构。
【北方交通大学2001二、4】 2.线性表L=用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是________。
【北方交通大学2001二、9】 3.设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点,若将结点y插入结点x之后,则需要执行以下语句:
_______;______;【华中理工大学2000一、4】 4.在一个长度为n的顺序表中第i个元素之前插入一个元素时,需向后移动________个元素。
【北京工商大学2001二、4】 5.在单链表中设置头结点的作用是________。
【哈尔滨工业大学2000二、1】 6.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为________,在给定值为x的结点后插入一个新结点的时间复杂度为________。
【哈尔滨工业大学2001一、1】 7.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成________和_______;而又根据指针的连接方式,链表又可分成________和______ 10.链接存储的特点是利用________来表示数据元素之间的逻辑关系。
【中山大学1998一、1】 11.顺序存储结构是通过________表示元素之间的关系的;链式存储结构是通过________表示元素之间的关系的。
【北京理工大学2001七、2】 12.对于双向链表,在两个结点之间插入一个新结点需修改的指针共______个,单链表为_______个。
【南京理工大学2000二、2】 13.循环单链表的最大优点是:
________。
【福州大学1998二、3(2分)】 14.已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:
________ 【合肥工业大学1999三、2】 15.带头结点的双循环链表L中只有一个元素结点的条件是:
________ 【合肥工业大学1999三、32000三、2】 16.在单链表L中,指针p所指结点有后继结点的条件是:
__【合肥工业大学2001三、3】 17.带头结点的双循环链表L为空表的条件是:
________。
【北京理工大学2000二、1】【青岛大学2002三、1】18.在单链表p结点之后插入s结点的操作是:
_______。
【青岛大学2002三、2】19.请在下列算法的横线上填入适当的语句。
【清华大学1994五】 FUNCTIONinclusion(ha,hb:
linklisttp):
boolean; {以ha和hb为头指针的单链表分别表示有序表A和B,本算法判别表A是否包含在表B内,若是,则返回“true”,否则返回“false”} 链表中,每个结点的值各不相同,但链表p和链表q可能有值相同的结点。
下面的程序将链表q合并到链表p中,使得合并后的链表是按结点值递增次序链接起来的带表头结点的环形链表,且链表中各个结点的值各不相同。
请在划线处填上适当内容,每个框只填一个语句或一个表达式,链表的结点类型如下 TYPEnodeptr=
odetype; nodetype=RECORD data:
integer;link:
nodeptr; END; CONSTmax=9999; PROCnk;(I)__;dispose(s)END END; dispose(q) END;【复旦大学1997五】 23.PROCins__linklist(la:
linkisttp;i:
integer;b:
elemtp); {la为指向带头结点的单链表的头指针,本算法在表中第i个元素之前插入元素b}p:
=
(1) ;j:
=
(2) ;{指针初始化,j为计数器} WHILE(pNIL)AND((3))DO[p:
=(4) ;j:
=j+1;]{寻找第i-1个结点} IF(p=NIL)OR((5) ) THENerror(‘Nothisposition’) ELSE[new(s);s↑.data:
=b;s↑.next:
=p↑.next;p↑.next:
=s;]ENDP;{ins-linklist}【燕山大学1998四、1】24.已知双链表中结点的类型定义为:
TYPEdpointer=
ist; list=RECmaxlen END; PROCexam21(VARL:
sqlisttp);j:
=1;i:
=2; WHILE
(1)______DO [IF[i][j]THEN[
(2)_______;(3)______]; i:
=i+1](4)________; ENDP;【同济大学2000二、1(10分)】 26.在本题的程序中,函数过程Create_link_list(n)建立一个具有n个结点的环形链表;程序过程josephus(n,i,m)对Create_link_list(n)所建立的具有n个结点的环形链表按一定的次序逐个输出并删除链表中的所有结点,参数n(n>0)指明环形链表的结点个数,参数i(10)是步长,指明从起始结点或前次被删除并输出的结点之后的第m个结点作为本次被输出并删除的结点。
例如,对于下图中具有6个结点的环形链表,在调 用josephus(6,3,2)后,将输出5,1,3,6,4,2请在横线处填上适当内容,每空只填一个语句。
TYPEnodeptr=
odetype; nodetype=RECORD data:
intrger;link:
nodeptr END; VARn,i,m:
integer; FUNCTIONCreate_link_list(n:
integer):
nodeptr; VARhead,p,q:
nodeptr;i:
integer; BEGINhead:
=NIL; IFn>0THEN BEGINnew(head);p:
=head;telnEND;【复旦大学1996七1995一与本题相似】 28.下面函数的功能是在一个按访问频度不增有序的,带头结点的双向链环上检索关键值为x的结点,对该结点访问频度计数,并维护该链环有序。
若未找到,则插入该结点。
所有结点的频度域初值在建表时都为零。
请将程序中四处空缺补写完整。
TYPE link=
odenode=RECORD key:
char;freq:
integer;pre,next:
link;END; VARl:
link;___【北京工业大学2000四(15分)】 30.以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。
voidreverse(pointerh) /*h为附加头结点指针;类型pointer同算法设计第3题*/{pointerp,q; p=h->next;h->next=NULL;while(
(1)________) {q=p;p=p->next;q->next=h->next;h->next=
(2)________;}}【西南交通大学2000一、9】 31.下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。
voidreverse{ p=null;q=L;while {
(1) ;q->next=p;p=q;
(2)___;} (3)_____; }【北京理工大学2001九、1】 32.下面程序段是逆转单向循环链表的方法,p0是原链表头指针,结束。
建立一个数据以递增序组成的链表。
PROCinsert(head,x); {在链首为head的表中按递增序插入x}new(r);r^.data:
=x; IFhead=NIL THEN[head:
=
(1)_____;r^.next:
=
(2)________]ELSEIF(3)___THEN[r^.next:
=head;head:
=r] ELSE[p:
=head; WHILE(4)___AND(p^.next≠NIL)DO[q:
=p;(5)___]; IF(6)___THEN[q^.next:
=(7)___;r^.next:
=(8)____;] ELSE[p^.next:
=(9)____;r^.next:
=(10)___;] ] ENDP; PROCcreat(head); head:
=(11)______;read(num); WHILEnum>0DO [insert(head,num);read(num)]ENDP;【南京理工大学1999三、4】 34.一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef,指数域exp和指针域next;现对链表求一阶导数,链表的头指针为ha,头结点的exp域为–1。
derivative(ha) {q=ha;pa=ha->next; while(
(1)_______) {if(
(2)____){((3)__);free(pa);pa=((4)_);} else{pa->coef((5)___);pa->exp((6)___);q=((7)__);} pa=((8)________); } } 【南京理工大学2000三、3】 35.下面是删除单链表L中最大元素所在结点的类PASCAL语言算法,请在横线填上内容,完成其功能。
TYPEpointer=↑node; node=RECORD data:
integer;next:
pointer END; PROCEDUREdelmax(L:
pointer);VARp,q,r:
pointer;m:
integer;BEGIN r:
=L;p:
=L↑.next; IFpNILTHEN [m:
=p↑.data;
(1)________;p:
=p↑.next; WHILEpNILDO [IF
(2)________THEN[(3)________;m:
=p↑.data;] (4)________;p:
=p↑.next;] q:
=r↑.next;(5)______;dispose(q); ] END;【北京科技大学1998二】 36.对单链表中元素按插入方法排序的C语言描述算法如下,其中L为链表头结点指针。
请填充算法中标出的空白处,完成其功能。
递增的次序进行就地排序.【中科院计算所1999五、1】 7.设Listhead为一单链表的头指针,单链表的每个结点一个整数域DATA和指针域NEXT组成,整数在单链表中是无序的。
编一PASCAL过程,将Listhead链中结点分成一个奇数链和一个偶数链,分别P,Q指向,每个链中的数据按小到大排列。
程序中不得使用NEW过程申请空间。
【山东大学1993六(15分)】 类似本题的另外叙述有:
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点。
【北京理工大学2000四、2】
(2)设L为一单链表的头指针,单链表的每个结点一个整数域data和指针域NEXT组成,整数在单链表中是无序的。
设计算法,将链表中结点分成一个奇数链和一个偶数链,分别P,Q指向,每个链中的数据按小到大排列,算法中不得申请新的结点空间。
【青岛海洋大学1999三】 (3)将一个带头结点的单链表A分解为两个带头结点的单链表A和B,使得A表中含有原表中序号为奇数的元素,而B表中含有原表中序号为偶数的元素,且保持其相对顺序不变。
1)写出其类型定义:
2)写出算法。
【山东大学1998九(9分)】【山东工业大学2000九】 8.已知线性表按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值元素前边的算法:
例:
变为。
【东北大学1998二(15分)】 类似本题的另外叙述有:
设有一元素为整数的线性表L=(a1,a2,a3,?
an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左、右两部分,其中左半部分每个元素小于等于an,右半部分每个元素都大于an,an位于分界位置上(要求结果仍存放在A[N]中)。
【北京理工大学1999八】 顺序存储的线性表A,其数据元素为整型,试编写一算法,将A拆成B和C两个表,使A中元素值大于等于0的元素放入B,小于0的放入C中..要求:
1)表B和C另外设置存储空间; 2)表B和C不另外设置,而利用A的空间.【山东大学2001九、1(12分)】知线性表按顺序存储,且每个元素都是整数均不相同,设计把所有奇数移到所有偶数前边的算法。
【东北大学1997三(15分)】 (4)编写函数将一整数序列中所有负数移到所有正数之前,要求时间复杂度为O 【南京航空航天大学2001八】 (5)已知一个n个整数组成的线性表,试设计该线性表的一种存储结构,并用标准pascal语言描述算法,实现将n个元素中所有大于等于19的整数放在所有小于19的整数之后。
要求算法的时间复杂度为O(n),空间复杂度O
(1)。
【西安交通大学1996六】 9.试编写在带头结点的单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 线性