数据库 线性表题库.docx

上传人:b****7 文档编号:23684089 上传时间:2023-05-19 格式:DOCX 页数:17 大小:140.47KB
下载 相关 举报
数据库 线性表题库.docx_第1页
第1页 / 共17页
数据库 线性表题库.docx_第2页
第2页 / 共17页
数据库 线性表题库.docx_第3页
第3页 / 共17页
数据库 线性表题库.docx_第4页
第4页 / 共17页
数据库 线性表题库.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据库 线性表题库.docx

《数据库 线性表题库.docx》由会员分享,可在线阅读,更多相关《数据库 线性表题库.docx(17页珍藏版)》请在冰豆网上搜索。

数据库 线性表题库.docx

数据库线性表题库

一、单项选择题

1、线性表的静态链表存储结构与顺序存储结构相比优点是()

A、所有的操作算法实现简单B便于随机存取

B、C便于插入和删除D便于利用零散的存储器空间

2、将下图所示的s所指结点加到p所指结点之后,其语句应为:

()

p

s

As->next=p+1;p->next=s;B(*p).next=s;(*s).next=(*p).next;

Cs->next=p->next;p->next=s->next;Ds->next=p->next;p->next=s;

3、不带头结点的单链表head为空的判定条件是()

Ahead==NULLBhead->next==NULLChead->next==headDhead!

=NULL

4、带头结点的单链表head为空的判定条件是()

Ahead==NULLBhead->next==NULLChead->next==headDhead!

=NULL

5、在一个单链表中,已知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;

6、在一个单链表中,若p所指结点不是最后结点,在p之后插入s结点,则应执行语句()

As->next=p:

p->next=s;Bs->next=p->next;p->next=s;

Cs->next=p->next;p=s;Dp->next=s;s->next=p;

7、在一个单链表中,若删除p所指结点的后续结点,则应执行语句()

Ap->next=p->next->next;Bp=p->next;p->next=p->next->next;

Cp->next=p->next;Dp=p->next->next;

8、从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较__个结点()

AnBn/2C(n-1)/2D(n+1)/2

9、数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:

(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构

10、一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是

(A)110(B)108(C)100(D)120

11、在n个结点的顺序表中,算法的时间复杂度是O

(1)的操作是:

(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)

(B)在第i个结点后插入一个新结点(1≤i≤n)

(C)删除第i个结点(1≤i≤n)(D)将n个结点从小到大排序

12、向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素

(A)8(B)63.5(C)63(D)7

13、链接存储的存储结构所占存储空间:

(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

(B)只有一部分,存放结点值

(C)只有一部分,存储表示结点间关系的指针

(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数

14、链表是一种采用存储结构存储的线性表;

(A)顺序(B)链式(C)星式(D)网状

15、线性表若采用链式存储结构时,要求内存中可用存储单元的地址:

(A)必须是连续的(B)部分地址必须是连续的

(C)一定是不连续的(D)连续或不连续都可以

16、线性表L在情况下适用于使用链式结构实现。

(A)需经常修改L中的结点值(B)需不断对L进行删除插入

(C)L中含有大量的结点(D)L中结点结构复杂

17、单链表的存储密度

(A)大于1;(B)等于1;(C)小于1;(D)不能确定

18、设a1、a2、a3为3个结点,整数P0,3,4代表地址,则如下的链式存储结构称为

P0

3

4

P0

a1

3

a2

4

A3

0

(A)循环链表(B)单链表(C)双向循环链表(D)双向链表

19、线性表是具有n个_______的有限序列。

A表元素B字符c数据元素d数据项e信息项

20、线性表的静态链表存储结构与顺序存储结构相比的有点是________

A所有的操作算法实现简单B便于随机存取

C便于插入和删除D便于利用零散的存储器空间

21、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为________

AO(n)BO

(1)CO(n)DO(n2)

22、

(1)静态链表既有顺序存储的优点,又有动态链表的优点。

所以,它存取表中第i个元素的时间与i无关;

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

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

以上错误的是______

A

(1)、

(2)B

(1)C

(1)、

(2)、(3)D

(2)

23、将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()

a.nb.2n-1c.2nd.n-1

24、在一个长度为n的顺序表中,在第i个元素(1<=i<=n+1)之前插入一个新元素时须向后移动()个元素.

a.n-1b.n-i+1c.n-i-1d.i

25、线性表L=(a1,a2,…,an),下列说法正确的是()

a.每个元素都有一个直接前驱和一个直接后继

b.线性表中至少要有一个元素

c.表中诸元素的排列顺序必须是由小到大或由大到小

d.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继

26、对单链表表示法,以下说法错误的是()

a.数据域用于存储线性表的一个数据元素

b.指针域(或链域)用于存放一个指向本结点所含数据元素的直接后继所在结点的指针

c.所有数据通过指针的链接而组织成单链表

d.NULL称为空指针,它不指向任何结点只起标志作用

27、若给定有n个元素的向量,则建立一个有序单向链表的时间复杂度的量级是()

a.O

(1)b.O(n)c.O(n2)d.O(nlog2n)

28、以下说法正确的是()

a.顺序存储方式的优点是存储密度大且插入、删除运算效率高

b.链表的每个结点中都恰好包含一个指针

c.线性表的顺序存储结构优于链式存储结构

d.顺序存储结构属于静态结构而链式结构属于动态结构

29、以下说法错误的是()

a.对循环链表来说,从表中任一结点出发都能通过前后移操作扫描整个循环链表

b.对单链表来说,只有从头结点开始才能扫描表中全部结点

c.双链表的特点是找结点的前驱和后继都很容易

d.对双链表来说,结点*p的存储位置既存放在其前驱结点的后继指针域中,也存放在其后继结点的前驱指针域中

30、以下说法错误的是()

a.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低

b.顺序存储的线性表可以随机存取

c.由于顺序存储要求连续的存储区域,所有在存储管理上不够灵活

d.线性表的链式存储结构优于顺序存储结构

31、对头指针为head的单链表为空的判定条件是。

A.head==NULLB.head->next==NULL

C.head->next==headD.head!

=NULL

32、在一个单链表中,已知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;

二、填空题

1、单链表是________的链接存储表示。

2、在双链表中,每个结点有两个指针域,一个指向_________,一个指向___________。

3、在一个单链表中的p所指结点之前插入一个s所指结点时,可执行如下操作:

s->next=________;

p->next=s;

t=p->data;

p->data=_________;

s->data=_________;

4、在一个单链表中删除p所指结点时,应执行以下操作:

q=p->next;

p->data=p->next->data;

p->next=_________;

free(q);

5、带有一个头结点的单链表head为空的条件是_________

6、在一个单链表中p所指结点之后插入一个s所指结点,应执行s->next=_________和p->next=________的操作

7、在头指针为HS的链表,判定链空的条件是_______

8、对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是________;在给定值为x的结点后插入一个新结点的时间复杂度是________

9、下段程序的功能:

有一头指针为head的链表,将new指针指向的节点插入到data域为7的节点的后边。

将程序补充完整。

P=head;

while(P!

=NULL)

{if(P->data==7)

/*找到位置插入结点后跳出循环*/

{________________

(1)

________________

(2)

________________(3)}

else

_________________(4)/*指针后移*/

}

if(P==NULL)

printf(“\nthepositionisn’texist!

”);

10、在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数

与有关。

11、线性表中结点的集合是的,结点间的关系是的。

12、向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素。

13、向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。

14、在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为的数据结构。

15、顺序表中逻辑上相邻的元素的物理位置相邻。

单链表中逻辑上相邻的元素的物理位置相邻。

16、在单链表中,除了首元结点外,任一结点的存储位置由指示。

17、在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂为。

18、在单链表中设置头结点的作用是()。

19、设单链表的节点结构为(data,next),next为指针域。

已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点,若将结点y插入结点x之后,则需要执行下面的语句();()。

20、顺序存储结构使线性表中逻辑上相邻的数据元素在物理位置上也相邻。

因此,这种表便于()访问,是一种()结构。

21、在一个循环单链表中,表尾结点的指针域与表头指针值()。

22、在一个不带头结点的单链表中,在表头插入或删除与在其他位置插入或删除其操作过程()。

23、在线性表的顺序存储中,元素之间的逻辑关系是通过()决定的;在线性表的链式存储中,元素之间的逻辑关系是通过()决定的。

24、单链表表示法的基本思想是用()表示结点间的逻辑关系

三、改错题

1、在一个单链表中,已知p所指节点是q所指节点的后继节点,下列语句完成将数据value插入q所指节点之后的功能.指出错误语句的行号并改正.这里链表结点类型定义为:

structnodelist

{

intdata;

structnodelist*next;

};

typedefstructnodelistnode;

typedefnode*link;

01voidinsert(intvalue)

02{

03linknewnode;

04newnode=(link)malloc(sizeof(node));

05newnode->data=value;

06newnode->next=q;

07p=newnode;

08}

四、程序设计

1、一个单链表(不同结点的数据域值可能相同),其头指针为head,编写一个函数计算数据域为x的节点个数。

2、下面给出一元多项式类型定义:

StructItem{

RealCoeff:

;

IntExp;

StructIem*Link;

}

请给出两个C函数,其中一个为从键盘上输入多项式各个项的系数和指数,建立多项式。

按(系数、指数)形式,项的输入顺序任意,以(0,0)作为输入结束标志,另一个为求两个多项式的和。

3、阅读以下算法,填充空格,使其成为完整的算法。

其功能是在一个非递减的顺序存储线性表中,删除所有值相等的多余元素。

#definemaxlen30

structsqlisttp

{

intelem[maxlen];

}

voidexam21(sqlisttpL)

{

j=1;

I=2;

While()

{

if(L.elem[i]!

=L.elem[j])

I=j+1;

}

}

4、给定(已生成)一个带头结点的单链表,设head为头指针,结点的结构为(data,next),data为整数元素,next为指针,试写出算法:

按递增次序输出单链表中各结点的数据元素并释放结点所占的存储空间。

(要求:

不允许使用数组作辅助空间)。

5、假设有两个按元素递增有序排列的线性表A和B,均以单链表作存储结构。

请编写算法,将表A和表B归并成一个按元素值非递减有序(允许值相同)排列的线性表C,并要求利用原表(即表A和表B)的结点空间存放表C。

6、下面程序段是合并两条链(f和g)为一条链f的过程。

作为参数的两条链都是按结点上number值由小到大链接的。

合并后新链仍按此方式链接。

请写下述空框,使程序能正确运行。

7、写一算法,将一单链表逆转。

要求逆转在原链表上进行,不允许重新构造一个链表。

8、已知非空线性链表第一个结点右list指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置(设p指向的不是链表最后那个结点)。

9、设有一个由正整数组成的无序(向后)单链表,编写能够完成下列功能的算法:

(1)找出最小值结点,且打印该数值;

(2)若该数值是奇数,则将其与直接后继结点的数值交换;

(3)若该数值是偶数,则将其直接后继结点删除。

10、设有头结点的单链表L,编程对表中任一值只保留一个结点,删除其余值相同的结点。

11、假设一个单循环链表,其结点含有三个域pre、data和link。

其中data为数据域;pre为指针域,它的值为空指针(NULL);link为指针域,它指向后继结点。

请设计算法,将此表改成双向循环链表。

(了解)

12、删除一链表中的第i个结点,其中i的值由用户给定,如果该位置i不存在要给出提示信息。

13、在头结点为h的单链表中,把值为b的结点s插入到值为a的结点之前,若不存在a,就把结点s插入到表尾。

14、设计一个算法将一个带头结点的单链表A分解成两个带头结点的单链表A和B,使A中含有原链表中序号为奇数的元素,而B中含有原链表中序号为偶数的元素,并且保持元素原有的相对顺序。

15、设线性表中的数据元素是按值非递减有序排列的,试以不同的存储结构,编写一算法,将x插入到线性表的适当位置上,以保持线性表的有序性。

16、假设有A和B分别表示两个递增有序排列的线性表集合(即同一表中元素值各不相同),求A和B的交集C,表C中也依值递增有序排列。

试以不同的存储结构编写求得C的算法。

17、设计一个算法求两个递增有序排列的线性表A和B的差集。

(每个单链表中不存在重复的元素)

18、设有线性表A=(a1,a2,...,am),B=(b1,b2,...,bn)。

试写一合并A、B为线性表C的算法,使得

(a1,b1,...,am,bm,bm+1,...,bn)当m≤n时

C={

(a1,b1,...,an,bn,an+1,...,am)当m>n时

A、B和C均以单链表作存储结构,且C表利用A和B中结点空间。

19、试用两种线性表的存储结构来解决约瑟夫问题。

设有n个人围坐在圆桌周围,现从第s个人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,…,如此重复直到所有的人全部出列为止。

例如当n=8,m=4,s=1,得到的新序列为:

4,8,5,2,1,3,7,6。

写出相应的求解算法。

20、已知单链表中的数据元素含有三类字符(即:

字母字符、数字字符和其它字符),试编写算法构造三个环形链表,使每个环形链表中只含同一类的字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。

21、

五、简答题

1、在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知头指针,能否将结点

*p从相应的链表中删除?

若可以其时间复杂度各为多少?

2、试比较顺序存储结构和链式存储结构的优缺点。

在什么情况下用顺序表比链表好?

3、描述以下三个概念的区别:

头指针、头结点、首元结点(第一个元素结点)。

在单链表中设置头结点的作用是什么?

4、线性表有两种存储结构:

一是顺序表,二是链表,试问:

(1)如果有n个线性表同时共存,并且在处理过程中各表的长度会动态地发生变化,线性表的总数也会自动地改变。

在此情况下,应选用哪种存储结构?

为什么?

(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存取结构?

为什么?

5、频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?

为什么?

6、线性表的顺序存储结构具有三个弱点:

其一,在作插入和删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。

线性表的链式存储结构是否一定能够克服上述三个弱点,试讨论之。

7、设A是一个线性表(a1,a2,…,an),采用顺序存储结构,则在等概率的前提下,平均每插入一个元素,需要移动的元素个数为多少?

若元素插在ai与ai+1之间(0≤i≤n-1))的概率为

,则平均每插入一个元素所要移动的元素个数又是多少?

(了解)

8、链表所表示的元素是否是有序的?

如果有序,则有序性体现在何处?

链表所表示的元素是否一定要在物理上是相邻的?

有序表(顺序表)有序性又如何理解?

9、用线性表的顺序存储结构来描述一个城市的设计和规划是否合适?

为什么?

10、假设本测试中使用的链表结点定义如下:

structList

{intdata;

structList*next;

};

typedefstructListNode;

typedefNode*Link;

LinkP,Q,R,S,head;

Linkpointer,back,new;

对以下单链表分别执行下列程序段,要求分别画出结果图

(1)Q=head->next->next;

(2)R->data=P->data;

(3)R->data=P->next->data;

(4)S=P;

while(S->next!

=NULL)

{S->data=S->data*2;S=S->next;}

(5)S=P;

while(S!

=NULL)

{S->data=S->data*2;S=S->next;}

11、定义同上图

画出执行如下程序段后各指针及链表的示意图

head=(Link)malloc(sizeof(Node));

head->data=0;

head->next=NULL;

P=head;

for(i=1;i<4;i++)

{new=(Link)malloc(sizeof(Node));

new->data=2*i;

new->next=NULL;

P->next=new;

P=new;

}

12、有一链表如下图所示,阅读程序给出程序的输出结果

P=head;

while(P!

=NULL)

{

printf(“\ndata=%d”,P->data);

P=P->next;

if(P!

=NULL)

P=P->next;

}

13、链表和指针如图所示,删除pointer指针所指的节点,写出相关语句

14、描述以下四个概念的区别:

头指针变量,头指针,头结点,首结点(第一个结点)。

15、简述线性表的两种存储结构有哪些主要优缺点及各自使用的场合。

16、设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个地址空间,求A[3][3](10)存放在什么位置?

17、将以下稀疏矩阵进行压缩,请写出压缩后的数组内容。

001000

000080

000300

600000

000004

050000

000000

六、判断正误

()1.链表的每个结点中都恰好包含一个指针。

()2.链表的物理存储结构具有同链表一样的顺序。

()3.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。

()4.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

()5.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

()6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

()7.线性表在物理存储空间中也一定是连续的。

()8.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。

()9.顺序存储方式只能用于存储线性结构。

()10.线性表的逻辑顺序与存储顺序总是一致的。

()11、性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。

()12、具有头结点的链式存储结构中,头指针指向链表中的第一个数据结点。

()13、序存储的线性表可以随机存取。

()14、在单链表中,要访问某个结点,只要知道该结点的指针即可;因此,单链表是一种随机存取结构。

()15、在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。

顺序存储结构属于静态结构,链式结构属于动态结构。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1