数据结构练习 第二章 线性表_第1页
数据结构练习 第二章 线性表_第2页
数据结构练习 第二章 线性表_第3页
数据结构练习 第二章 线性表_第4页
数据结构练习 第二章 线性表_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构练习 第二章 线性表一、选择题1. 下面关于线性表的叙述错误的是( )。A.线性表采用顺序存储必须占用一片连续的存储空间B. 线性表采用链式存储不必占用一片连续的存储空间C. 线性表采用链式存储便于插入和删除操作的实现D. 线性表采用顺序存储便于插入和删除操作的实现2. 设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为( )。A.q=p->next;p->data=q->data;p->next=q->next;free(q);B. q=p->next;q->data=p->data;p->next=

2、q->next;free(q);C. q=p->next;p->next=q->next;free(q);D. q=p->next;p->data=q->data;free(q);3. 设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为( )。A. O(n) B. O(nlog2n) C. O(1) D. O(n2)4设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为( )。A. O(log2n) B. O(1) C. O(n2) D. O(n)5设一条单链表的头指针变量为head且该链

3、表没有头结点,则其判空条件是( )。A. head=0B.head->next=0C. head->next=head D.head!=06设带有头结点的单向循环链表的头指针变量为head,则其判空条件是( )。A. head=0B. head->next=0C. head->next=head D. head!=07建立一个长度为n的有序单链表的时间复杂度为( )A. O(n) B. O(1) C. O(n2) D. O(log2n)8设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( )个元素。A. n-i B. n+l -i C. n-1-i D. i9

4、设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为( )。A. p->right=s; s->left=p; p->right->left=s; s->right=p->right;B. s->left=p;s->right=p->right;p->right=s; p->right->left=s;C. p->right=s; p->right->left=s; s->left=p; s->right=p->right;D. s-&g

5、t;left=p;s->right=p->right;p->right->left=s; p->right=s;10设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。A. 单向链表B .单向循环链表C. 双向链表 D. 双向循环链表11设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为( )。A. s->next=p->next;p->next=-s;B. q->next=s; s->next=p;C. p-&g

6、t;next=s->next;s->next=p; D. p->next=s;s->next=q;12在一个长度为n的顺序存储的线性表中,向第i个元素(1in+1)之前插入一个新元素时,需要从后向前依次后移( )个元素。An-i Bn-i+1 Cn-i-1 Di13在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()。A. q->next=p->next;p->next=q;B. p->next=q->next;q=p;C. q->next=p->next;p->next=q;D. p-&

7、gt;next=q->next;q->next=p;14在单链表中,存储每个结点需要有两个域,一个是数据域,另一个是指针域,指针域指向该结点的()A.直接前趋 B.直接后继C.开始结点 D.终端结点15将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数为()A.n B.2n-1C.2nD.n216线性表采用链式存储结构时,要求内存中可用存储单元的地址( )A. 必须是连续的 B. 必须是部分连续的 C. 一定是不连续的 D. 连续和不连续都可以17设h是指向非空带表头结点的循环链表的头指针,p是辅助指针。执行程序段 p=h; while (p->next->n

8、ext!=h) p=p->next; p->next=h; 后(其中,p->next为p指向结点的指针域),则( )A. p->next指针指向链尾结点 B. h指向链尾结点 C. 删除链尾前面的结点 D. 删除链尾结点18设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为( )A.236 B.239 C.242 D.24519设顺序表有9个元素,则在第3个元素前插入一个元素所需移动元素的个数为( )A.5 B.6 C.7 D.920设p为指向双向循环链表中某个结点的指针,p所指向的结点的两个链域分别用pllink和prli

9、nk表示,则同样表示p指针所指向结点的表达式是( )A.pllink B.prlinkC.pllinkllink D.pllinkrlink21一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是( )A. 110 B. 108 C. 100 D. 12022关于存储相同数据元素的说法中正确的是( )A顺序存储比链式存储少占空间B.顺序存储比链式存储多占空间C.顺序存储和链式存储都要求占用整块存储空间D.链式存储比顺序存储难于扩充空间23已知一个单链表中,指针q指向指针p的前趋结点,若在指针q所指结点和指针p所指结点之间插入指针s所指结点,则需执行( )Aqnex

10、t=s;pnext=s;B.qnext=s;snext=p;C.qnext=s;qnext=p; D.qnext=s;snext=q;24在长度为n的线性表中删除一个指针p所指结点的时间复杂度是( )AO(n)B.O(1)C.O(log2n) D.O(n2)25若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则最节省运算时间的存储方式是()A.单链表 B.仅有头指针的单循环链表C.双链表 D.仅有尾指针的单循环链表26从一个长度为n的顺序表中删除第i个元素(1in)时,需向前移动的元素的个数是()A.n-i B.n-i+1 C.n-i-1 D.i27对于长度为n的顺序

11、表执行删除操作,则其结点的移动次数()A.最少为0,最多为nB.最少为1,最多为nC.最少为0,最多为n-1D.最少为1,最多为n-128在一个单链表中,若p所指结点是q所指结点的前驱结点,则删除结点q的正确操作是()A. p->next=qB. p->next=q->nextC. p=q->nextD. p->next=q->next->next29在一个具有n个结点的有序单链表中插入一个新结点,并使插入后仍然有序,则该操作的时间复杂性量级为()AO(1) BO(n)CO(nlog2n) DO(n2)30顺序存储的线性表(a1,a2,an),在任一结

12、点前插入一个新结点时所需移动结点的平均次数为()An Bn/2Cn+1 D(n+1)/231设单链表中指针p指向结点A,若删除A后的结点存在,则需要修改指针的操作为( )。Ap->next=p->next->next Bp=p->nextCp=p->next->next Dp->next=p32线性表的链式存储实现有利于( )运算。A插入 B读表元C查找 D定位33从一个长度为n的顺序表中删除第i个元素(1in),需向前移动( )个元素。An-i Bn-i+1Cn-i-1 Di34在一个长度为n的顺序存储线性表中,向第i个元素(1in+1)之前插入一个

13、新元素时,需向后移动( )个元素。An-i Bn-i+1Cn-i-1 Di35在一个单链表中,已知*q结点是*p结点的前趋结点,若在*q和*p之间插入*s结点,则需执行( )。As->next=p->next; p->next=s; Bq->next=s; s->next=p;Cp->next=s->next; s->next=p; Dp->next=s; s->next=q;36在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。A.HL = p; p->next = HL; B.p->next =

14、HL; HL = p;C.p->next = HL; p = HL;D.p->next = HL->next; HL->next = p;37在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行( )。A.p = q->next ; p->next = q->next;B.p = q->next ; q->next = p; C.p = q->next ; q->next = p->next; D.q->next = q->next->next; q->next = q;38线性表采用链

15、式存储时,其地址( )。 A必须是连续的 B部分地址必须是连续的 C一定是不连续的 D连续与否均可以39在一个长度为n的线性表中插入第i个元素的操作中,i的取值范围是 A1in B0in C1i n+1 D1in-140如果要查找单链表中的第i个元素,应该从( )开始进行查找。A第i个结点 B 头结点 C 尾结点 D 任意一个结点41在一个长度为n的线性表中顺序查找值为x的元素时,查找时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为( )。A.n B.n/2 C. (n+1)/2 D. (n-1)/242在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针

16、p所指的结点,则执行( )。 A.q->next = p->next ; p->next = q; B.p->next = q->next; q = p; C.q->next = p->next; p->next = q; D.p->next = q->next ; q->next = p;43. 在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行( )。 A. slink=plink; plink=s; B. plink=s; slink=q; C . plink=slink; sl

17、ink=p; D. q link=s; slink =p;44. 线性链表不具有的特点是( )。A随机访问 B不必事先估计所需存储空间大小C插入与删除时不必移动元素 D所需空间与线性表长度成正比45. 下述哪一条是顺序存储结构的优点?( )。A  插入运算方便 B可方便地用于各种逻辑结构的存储表示 C存储密度大 D删除运算方便46. 下面关于线性表的叙述中,错误的是哪一个?( )。A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。47. 若某线性表

18、最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。A顺序表 B双链表 C带头结点的双循环链表 D单循环链表48某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。A. 单链表 B. 仅有头指针的单循环链表 C. 双链表 D. 仅有尾指针的单循环链表49设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。A. 带头结点的双循环链表 B.单循环链表 C. 带尾指针的单循环链表 D. 单链表50若线性表最常用的操作是存取第I个元素及其前驱和后继元素的值,为节省时间应

19、采用的存储方式( )。A.单链表 B.双向链表 C.单循环链表 D.顺序表51静态链表中指针表示的是( ) A.下一元素的地址 B.内存储器的地址C.下一元素在数组中的位置 D.左链或右链指向的元素的地址52在n个结点的线性表的数组实现中,算法的时间复杂性是O(1)的操作是( )A. 访问第i个结点(1i<=n)和求第i个结点的直接前驱(2i<=n) B. 在第i个结点后插入一个新结点(1i<=n)C. 删除第i个结点(1i<=n) D. 以上都不对53(1) 静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个

20、元素的时间与i无关。(2) 静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。(3) 静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。以上错误的是( )。A(1),(2) B(1) C(1),(2),(3) D.(2)54对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。AO(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)55单链表中,增加一个头结点的目的是为了( )。 A使单链表至少有一个结点 B标识表结点中首结点的位置 C方便运算的实现 D说明单链表是线性表的链式存储56对于双向循环链表,在p指

21、针所指的结点之后插入s指针所指结点的操作应为( )。Ap->right=s ; s->left=p; p->right->left=s ; s->right=p->right;Bp->right=s ; p->right->left=s ; s->left=p; s->right=p->right;Cs->left=p; s->right=p->right; p->right=s ; p->right->left=s ; ;Ds->left=p; s->right=p->

22、;right; p->right->left=s ; p->right=s ;57对于一个线性表既要求能够进行较快速的插入和删除,又要求存储结构能反映数据之间的逻辑关系,则应该用( )。A. 顺序存储方式 B. 链式存储方式 C. 散列存储方式 D. 以上均可以58在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:( )。Ap->next=s;s->next=p->next; B s->next=p->next;p->next=s;Cp->next=s;p->next=s->next; D p->next=

23、s->next;p->next=s;59线性表的顺序存储结构是一种( )。A. 随机存取的存储结构 B. 顺序存取的存储结构C. 索引存取的存储结构 D. Hash存取的存储结构60顺序表是线性表的( )A、链式存储结构 B、顺序存储结构 C、索引存储结构 D、散列存储结构61带头结点的单链表head为空的条件是( )A、head=NULL B、head->next=NULL C、head->next=head D、head!=NULL62链表不具有的特点是( ) A插入、删除不需要移动元素 B可随机访问任一元素 C不必事先估计存储空间 D所需空间与线性长度成正比63若

24、某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。A顺序表 B双链表 C带头结点的双循环链表 D单循环链表64下面关于线性表的叙述中,错误的是哪一个?( )A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。二、填空题1设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_个数据元素;删除第i个位置上的数据元素需要移动表中_个元素。2. 设指针变量p指向双向循环链表中的结点X,则删除结点

25、X需要执行的语句序列为_(设结点中的两个指针域分别为llink和rlink)。3设指针变量p指向单链表中结点A,则删除结点A的语句序列为:q=p->next;p->data=q->data;p->next=_;feee(q); 4在带头结点的单链表L中, 第一个元素所对应的结点的指针表达式是_。5在双向循环链表中,在结点*之前插入结点*的语句序列是: S-> prior = P-> prior ; S->next=P; P->prior=S; _。6在双链表中,存储一个结点有三个域,一个是数据域,另两个是指针域,分别指向_ _和_ 。7下面程序段

26、的功能是利用从尾部插入的方法建立单链表的算法,请在下划线处填上正确的内容。typedef struct node int data; struct node *next; lklist; void lklistcreate(_ *head ) for (i=1;i<=n;i+) p=(lklist*)malloc(sizeof(lklist);scanf(“%d”,&(p->data);p->next=0;if(i=1)head=q=p;else q->next=p;_; 8设指针p指向单链表中结点A,指针s指向被插入的结点X,则在结点A的前面插入结点X时的操作

27、序列为:1) s->next=_;2) p->next=s;3) t=p->data;4) p->data=_;5) s->data=t;9设指针变量p指向单链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X需要执行的语句序列:s->next=p->next; _;。10设指针变量head指向双向链表中的头结点,指针变量p指向双向链表中的第一个结点,则指针变量p和指针变量head之间的关系是p=_和head=_(设结点中的两个指针域分别为llink和rlink)。11设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X,

28、则在结点A的后面插入结点X的操作序列为_=p;s->right=p->right;_=s; p->right->left=s;(设结点中的两个指针域分别为left和right)。12设指针变量p指向单链表中结点A,指针变量s指向被插入的新结点X,则进行插入操作的语句序列为_(设结点的指针域为next)。13在一个单链表HL 中,若要向表头插入一个由指针p指向的结点,则应执行语句: 。14在采用独立结点构成的双向链表中,设p和q 分别是具有Dnode * 类型的指针变量。若双向链表中p结点之后插入一个q结点,其操作步骤为: ; ; ; ;15对于一个顺序存储的线性表,在表

29、头插入元素的时间复杂度为_,在表尾插入元素的时间复杂度为_。16在一个长度为n的顺序表中第i个元素(1in)之前插入一个元素时,需向后移动_个元素。17设双链表中结点的前趋指针和后继指针的域名分别为t1和r1,指针s指向双链表中的一个结点(该结点既非头结点,也非尾结点),则删除s指针所指向结点的操作为“s->tl->r1=s->r1;”和“_ _”。18设有指针head指向不带表头结点的单链表,用next表示结点的一个链域,指针p指向与链表中结点同类型的一个新结点。现要将指针p指向的结点插入表中,使之成为第一个结点,则所需的操作为“pnext=head;”和“_”。19单链表

30、中逻辑上相邻的两个元素在物理位置上_相邻。20在一个长度为n的数组中删除第i个元素(1in)时,需要向前移动的元素的个数是_。21在顺序表上读表元算法的时间复杂度为_。22双链表中前驱指针为prior,后继指针为next,在指针P所指结点前插入指针S所指的结点,需执行下列语句:Snext=P;Sprior=Pprior;Pprior=S;_;priordata,next23设某非空双链表,其结点形式为若要删除指针q所指向的结点,则需执行下述语句段:q->prior->nextq->next; _ _。24双向循环链表的优点是 25在一个长度为n的顺序表中删除一个元素,最少需移

31、动 个元素,最多需移动_个元素。 26将指向单链表中的某个结点的指针p移动到该结点的后继结点表示为 。 27 在线性表的单链接存储结构中,每个结点包含有两个域,一个叫 域,另一个叫 域。28在下面数组a中链接存储着一个线性表,表头指针为a0.next,则该线性表为 。29在线性表的顺序存储中,若一个元素的下标为i,则它的前驱元素的下标为 ,后继元素的下标为 。30在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为 ,若假定p为一个数组a中的下标,则其后继结点的下标为 。31在循环单链表中,最后一个结点的指针指向 结点。32在以HL为表头指针的带表头附加结点的单链表和循环

32、单链表中,链表为空的条件分别为 和 。33向一个顺序栈插入一个元素时,首先使 后移一个位置,然后把待插入元素 到这个位置上。34从一个栈中删除元素时,首先取出 ,然后再前移一位 。35设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点 , 若将结点y插入结点x之后,则需要执行以下语句:_; _;【华中理工大学 2000 一.4(2分)】36在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动_个元素。【北京工商大学 2001 二.4(4分)】37在单链表中设置头结点

33、的作用是_。【哈尔滨工业大学 2000 二.1(1分)】38对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为_,在给定值为x的结点后插入一个新结点的时间复杂度为_。【哈尔滨工业大学 2001 一.1(2分)】 39在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是_、_、_、_。【中国矿业大学 2000 一.1(3分)】40顺序存储结构是通过_表示元素之间的关系的;链式存储结构是通过_表示元素之间的关系的。【北京理工大学 2001 七.2 (2分)】41在单链表L中,指针p所指结点有后继结点的条件是:_【合肥工业大学 2001 三.3 (2

34、分)】三、判断题1( )线性表的顺序存储结构比链式存储结构更好。2( )线性表就是顺序存储的表。3( )线性表中的所有元素都有一个前驱元素和后继元素。4( )非空的双向循环链表中任何结点的前驱指针均不为空。5( )不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。6( )对链表进行插入和删除操作时不必移动链表中结点。7( )线性表只能用顺序存储结构实现。8( )如果某数据结构的每一个元素都最多只有一个直接前驱和一个直接后继,则该数据结构必为线性表。9( )采用链式结构存储线性表时,其地址可以是不连续的。10( )线性表中的每个元素都有一个前驱元素和后继元素。

35、11( )采用顺序结构存储线性表时,其地址可以是不连续的。12( )如果某数据结构的每一个元素都最多只有一个直接前驱和一个直接后继,则该数据结构必为线性表。 13( )线性表的唯一存储形式就是链表。 14( )线性表不能采用链式存储。 15( )在单链表中插入结点主要通过移动元素实现。 16( )所谓静态链表就是一直不发生变化的链表。17( )集合与线性表的区别在于是否按关键字排序。18( )用头部插入结点的方法建立单链表时,插入元素的顺序和链表中的元素顺序相同。19( )线性表中的每个元素都有一个前驱元素和后继元素。 四、简答题1比较顺序表与单链表的优缺点。2说明以下三个概念的关系:头指针,

36、头结点,首元素结点。3写出在双向链表中,在指针p所指结点前插入一个结点*S的语句序列。4. 画出带头结点的单链表、单循环链表和双向循环链表的示意图,并归纳三者的不同之处。5写出下列中缀表达式的后缀表达式:(1)A*B*C (2)(A+B)*C-D (3)A*B+C/(D-E) (4)(A+B)*D+E/(F+A*D)+C6线性表的顺序存储结构具有三个弱点:第一,在作插入或删除操作时,需要移动大量元素;第二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;第三,表的容量难以扩充。试问,线性表的链式存储结构是否一定能够克服上述三个弱点?请简述之。【北京师范大学2003二.4(

37、6分)】7. 如何通过改链的方法,把一个单向链表变成一个与原来链接方向相反的单向链表?【中国人民大学 2001 二.4 (2分)】 五、应用题1在下面的每个程序段中,假定线性表La的类型为List,元素类型ElemType为int,并假定每个程序段是连续执行的,试写出每个程序段执行后所得到的线性表La。 (1) InitList(La); int a=48,26,57,34,62,79; for(i=0; i<6; i+) InsertFront(La,ai); TraverseList(La); (2) InitList(La); for(i=0; i<6; i+) Insert(La,ai); T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论