《数据结构》第二章线性表习题与解答

《数据结构》第二章线性表习题与解答

一判断题

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

2.顺序存储的线性表可以按序号随机存取。

3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。

5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。

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

8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。

二单选题 (请从下列A,B,C,D选项中选择一项)

1.线性表是( ) 。

(A) 一个有限序列,可以为空;(B) 一个有限序列,不能为空;

(C) 一个无限序列,可以为空;(D) 一个无序序列,不能为空。

2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的()个元素。

(A) n/2 (B) n+1/2 (C) n -1/2 (D) n

3.线性表采用链式存储时,其地址( ) 。

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

(C) 一定是不连续的;(D) 连续与否均可以。

4.用链表表示线性表的优点是()。

(A)便于随机存取

(B)花费的存储空间较顺序存储少

(C)便于插入和删除

(D)数据元素的物理顺序与逻辑顺序相同

5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( )存储方式最节省运算时间。

(A)单链表

(B)双链表

(C)单循环链表

(D)带头结点的双循环链表

6.循环链表的主要优点是( )。

(A)不在需要头指针了

(B)已知某个结点的位置后,能够容易找到他的直接前趋

(C)在进行插入、删除运算时,能更好的保证链表不断开

(D)从表中的任意结点出发都能扫描到整个链表

7.下面关于线性表的叙述错误的是( )。

(A)线性表采用顺序存储,必须占用一片地址连续的单元;

(B)线性表采用顺序存储,便于进行插入和删除操作;

(C)线性表采用链式存储,不必占用一片地址连续的单元;

(D)线性表采用链式存储,不便于进行插入和删除操作;

8.单链表中,增加一个头结点的目的是为了()。

(A) 使单链表至少有一个结点(B)标识表结点中首结点的位置

(C)方便运算的实现(D) 说明单链表是线性表的链式存储

9.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

(A) 单链表(B) 仅有头指针的单循环链表

(C) 双链表(D) 仅有尾指针的单循环链表

10.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省运算时间()。

(A) 单链表(B) 顺序表

(C) 双链表(D) 单循环链表

三填空题

1.带头结点的单链表H为空的条件是__________________。

1.非空单循环链表L中*p是尾结点的条件是__________________。

3.在一个单链表中p所指结点之后插入一个由指针f所指结点,应执行s->next=________;和p->next=_____________的操作。

4.在一个单链表中p所指结点之前插入一个由指针f所指结点,可执行以下操作:s->next=________;

p->next=s;

t=p->data;

p->data=___________;

s->data=___________;

5.在顺序表中做插入操作时首先检查_________________。

四算法设计题

1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性。并且分析算法的时间复杂度。2.已知一顺序表A,其元素值非递减有序排列,编写一个函数删除顺序表中多余的值相同的元素。

3.编写一个函数,从一给定的顺序表A中删除值在x~y(x<=y)之间的所有元素,要求以较高的效率来实现。

提示:可以先将顺序表中所有值在x~y之间的元素置成一个特殊的值,并不立即删除它们,然后从最后向前依次扫描,发现具有特殊值的元素后,移动其后面的元素将其删除掉。

4.线性表中有n个元素,每个元素是一个字符,现存于向量R[n]中,试写一算法,使R 中的字符按字母字符、数字字符和其它字符的顺序排列。要求利用原来的存储空间,元素移动次数最小。(研54)

5.线性表用顺序存储,设计一个算法,用尽可能少的辅助存储空间将顺序表中前m个元素和后n个元素进行整体互换。即将线性表

(a1, a2, … , a m, b1, b2, … , b n)改变为:

(b1, b2, … , b n , a1, a2, … , a m)。

6.已知带头结点的单链表L中的结点是按整数值递增排列的,试写一算法,将值为x 的结点插入到表L中,使得L仍然有序。并且分析算法的时间复杂度。

7.假设有两个已排序的单链表A和B,编写一个函数将他们合并成一个链表C而不改变其排序性。

8.假设长度大于1的循环单链表中,既无头结点也无头指针,p为指向该链表中某一结点的指针,编写一个函数删除该结点的前趋结点。

9.已知两个单链表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集C,要求C同样以元素递增的单链表形式存储。

10.设有一个双向链表,每个结点中除有prior、data和next域外,还有一个访问频度freq 域,在链表被起用之前,该域其值初始化为零。每当在链表进行一次Locata(L,x)运算后,令值为x的结点中的freq域增1,并调整表中结点的次序,使其按访问频度的递减序列排列,以便使频繁访问的结点总是靠近表头。试写一个算法满足上述要求的Locata(L,x)算法。

五上机实习题目

1.Josephu 问题

Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)

的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。

提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的

单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个结点从链表中删除算法结束。2.一元多项式的相加

提示:

(1)一元多项式的表示问题:对于任意一元多项式:

P n(x)= P0+ P1X1+ P2X2+ … + P i X i+ … + P n X n

可以抽象为一个由“系数-指数”对构成的线性表,且线性表中各元素的指数项是递增的:

P=( ( P0,0), ( P1,1), ( P2,2), … , ( P n,n) )

(2 ) 用一个单链表表示上述线性表,结点结构为:

typedef sturct node Array { float coef; /*系数域*/

int exp; /*指数域*/

struct node *next; /*指针域*/

} Ploy Node;

约瑟夫环问题

约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,每

个人持有一个正整数密码。开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。如此下去,直到所有人全部出列为止。令n最大值取30。要求设计一个程序模拟此过程,求出出列编号序列。

源程序代码:(在Tubro C 2.0测试通过)

#include

#include

struct node

{

int number; /* 人的序号*/

int cipher; /* 密码*/

struct node *next; /* 指向下一个节点的指针*/

};

struct node *CreatList(int num) /* 建立循环链表*/

{

int i;

struct node *ptr1,*head;

if((ptr1=(struct node *)malloc(sizeof(struct node)))==NULL)

{

perror("malloc");

return ptr1;

}

head=ptr1;

ptr1->next=head;

for(i=1;i

{

if((ptr1->next=(struct node *)malloc(sizeof(struct node)))==NULL)

{

perror("malloc");

ptr1->next=head;

return head;

}

ptr1=ptr1->next;

ptr1->next=head;

}

return head;

}

main()

{

int i,n=30,m; /* 人数n为30个*/

struct node *head,*ptr;

randomize();

head=CreatList(n);

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

{

head->number=i;

head->cipher=rand();

head=head->next;

}

m=rand(); /* m取随机数*/

i=0; /* 因为我没办法删除head指向的节点,只会删除head的下一节点,所以只能从0数起。*/

while(head->next!=head) /* 当剩下最后一个人时,退出循环*/

{

if(i= =m)

{

ptr=head->next; /* ptr记录数到m的那个人的位置*/

printf("number:%d\n",ptr->number);

printf("cipher:%d\n",ptr->cipher);

m=ptr->cipher; /* 让m等于数到m的人的密码*/

head->next=ptr->next; /* 让ptr从链表中脱节,将前后两个节点连接起来*/

head=head->next; /* head移向后一个节点*/

free(ptr); /* 释放ptr指向的内存*/

i=0; /* 将i重新置为0,从0再开始数*/

}

else

{

head=head->next;

i++;

}

}

printf("number:%d\n",head->number);

printf("cipher:%d\n",head->cipher);

free(head); /* 让最后一个人也出列*/

}

数据结构第2章习题及答案

7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用()存储方式最节省运算时间。【北京理工大学 2000 一、1(2分)】 A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表 8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】 A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址 9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】 A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】 A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关 C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比 D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关 11. 线性表的表元存储方式有((1))和链接两种。试指出下列各表中使用的是何种存储方式:表1是((2))存储方式;表2是((3))存储方式;表3是((4))存储方式;表4是((5))存储方式。表左的s指向起始表元。 供选择的答案: A.连续 B.单向链接 C.双向链接 D.不连接 E.循环链接 F.树状 G.网状 H.随机 I.顺序 J.顺序循环 【上海海运学院 1995 二、1(5分)】 12.(1) 静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关。 (2) 静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。

第二章_线性表(参考答案)

第二章线性表 一、填空题 1、数据逻辑结构包括线性结构、树型结构、图型结构这三种类型,树形结构和图形结构合称为非线性结构。 2、在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有个前驱结点,最后一个结点没有后续结点,其余每个结点有且只有一个后续结点。 3、在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。 4、在顺序表中,逻辑上相邻的元素,其物理位置一定相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。 5、在带头结点的非空单链表中,头结点的存储位置由头指针指示,首元素结点的存储位置由头结点的next域指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋结点的next域指示。 6、阅读下列算法,并补充所缺内容。 void purge_linkst( ListNode *& la ) { // 从头指针为 la 的有序链表中删除所有值相同的多余元素,并释放被删结点空间ListNode *p,*q; if(la==NULL) return; q=la; p = la->link; while (p) { if (p && ___(1)p->data!=q->data___) {q=p; p = p->link;} else { q->link= ___(2)p->link___; delete(p); p=___(3)q->link___; } }//while }// purge_linkst 二、选择题 1、在数据结构中,从逻辑上可以把数据结构分成 C。 A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 2、线性表的逻辑顺序与存储顺序总是一致的,这种说法 B。 A、正确 B、不正确 3、线性表若采用链式存储结构时,要求内存中可用存储单元的地址D。 A、必须是连续的 B、部分地址必须是连续的 C、一定是不连续的 D、连续或不连续都可以 4、在以下的述叙中,正确的是B。 A、线性表的线性存储结构优于链表存储结构 B、二维数组是其数据元素为线性表的线性表 C、栈的操作是先进先出 D、队列的操作方式是先进后出 三、综合题 1、已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。 A、在P结点后插入S结点的语句序列是((4)、(1)); B、在P结点前插入S结点的语句序列是((7)、(11)、(8)、(4)、(1)); C、在表首插入S结点的语句序列是((5)、(12));

数据结构考研复习题--第二章--线性表(带答案)

第2章线性表 一选择题 1.下述哪一条是顺序存储结构的优点?()【北方交通大学 2001 一、4(2分)】A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示 2.下面关于线性表的叙述中,错误的是哪一个?()【北方交通大学 2001 一、14(2分)】 A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个()的有限序列(n>0)。【清华大学 1998 一、4(2分)】A.表元素 B.字符 C.数据元素 D.数据项 E.信息项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。【哈尔滨工业大学 2001 二、1(2分)】A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。【南开大学 2000 一、3】 A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表 6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。 A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表 【合肥工业大学 2000 一、1(2分)】 7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用()存储方式最节省运算时间。【北京理工大学 2000 一、1(2分)】A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表 8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】 A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址 9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】 A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】 A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关 C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比 D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关 11. 线性表的表元存储方式有((1))和链接两种。试指出下列各表中使用的是何种存储方式:表1是((2))存储方式;表2是((3))存储方式;表3是((4))存储方式;表4是((5))存储方式。表左的s指向起始表元。

数据结构(C++版)课后答案 (王红梅)第2章 线性表

第 2 章线性表 课后习题讲解 1. 填空 ⑴在顺序表中,等概率情况下,插入和删除一个元素平均需移动()个元素,具体移动元素的个数与()和()有关。 【解答】表长的一半,表长,该元素在表中的位置 ⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。【解答】108 【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108 ⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。 【解答】p->next=(p->next)->next ⑷单链表中设置头结点的作用是()。 【解答】为了运算方便 【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。 ⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。 【解答】p->next=head 【分析】如图2-8所示。 ⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。 【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next; rear->next->next=q->next; delete q; 【分析】操作示意图如图2-9所示:

⑺一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为();在给定值为x的结点后插入一个新结点的时间复杂度为()。 【解答】Ο(1),Ο(n) 【分析】在p所指结点后插入一个新结点只需修改指针,所以时间复杂度为Ο(1);而在给定值为x的结点后插入一个新结点需要先查找值为x的结点,所以时间复杂度为Ο(n)。 ⑻可由一个尾指针唯一确定的链表有()、()、()。 【解答】循环链表,循环双链表,双链表 2. 选择题 ⑴线性表的顺序存储结构是一种()的存储结构,线性表的链接存储结构是一种()的存储结构。 A 随机存取 B 顺序存取 C 索引存取 D 散列存取 【解答】A,B 【分析】参见2.2.1。 ⑵线性表采用链接存储时,其地址()。 A 必须是连续的 B 部分地址必须是连续的 C 一定是不连续的 D 连续与否均可以 【解答】D 【分析】线性表的链接存储是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续,也可以不连续,甚至可以零散分布在内存中任意位置。 ⑶单循环链表的主要优点是()。 A 不再需要头指针了 B 从表中任一结点出发都能扫描到整个链表; C 已知某个结点的位置后,能够容易找到它的直接前趋; D 在进行插入、删除操作时,能更好地保证链表不断开。 【解答】B ⑷链表不具有的特点是()。 A 可随机访问任一元素 B 插入、删除不需要移动元素 C 不必事先估计存储空间 D 所需空间与线性表长度成正比 【解答】A ⑸若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋,则采用()存储方法最节省时间。 A 顺序表 B 单链表 C 双链表 D 单循环链表 【解答】A 【分析】线性表中最常用的操作是取第i 个元素,所以,应选择随机存取结构即顺序表,同时在顺序表中查找第i个元素的前趋也很方便。单链表和单循环链表既不能实现随机存取,查找第i个元素的前趋也不方便,双链表虽然能快速查找第i个元素的前趋,但不能实现随机存取。 ⑹若链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用()存储方法最节省时间。 A 单链表 B 带头指针的单循环链表 C 双链表 D 带尾指针的单循环链表

《数据结构》第二章线性表习题及参考答案

《数据结构》 第二章线性表习题 一、单项选择题 1. 线性表是________。 A.一个有限序列,可以为空B.一个有限序列,不可以为空 C.一个无限序列,可以为空D.一个无限序列,不可以为空 2. 在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动个元素。 A.n-i B.n-i+l C.n-i-1 D.i 3. 线性表采用链式存储时,其地址________。 A.必须是连续的B.一定是不连续的 C.部分地址必须是连续的D.连续与否均可以 4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较________个元素结点。 A.n/2 B.n C.(n+1)/2 D.(n-1)/2 5. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是____。 A. p->next=s; s->prior=p; p->next->prior=s; s->next=p->next; B. s->prior=p; s->next=p->next; p->next=s; p->next->prior=s; C. p->next=s; p->next->prior=s; s->prior=p; s->next=p->next; D. s->prior=p; s->next=p->next; p->next->prior=s; p->next=s; 6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为________。A.p->next=p->next->next; B.p=p->next; C.p=p->next->next; D.p->next=p; 7. 在一个长度为n的顺序表中向第i个元素(0< inext=p->next; p->next=s B.q->next=s; s->next=p C.p->next=s->next; s->next=p D.p->next=s; s->next=q 9. 以下关于线性表的说法不正确的是______。 A.线性表中的数据元素可以是数字、字符、记录等不同类型。 B.线性表中包含的数据元素个数不是任意的。 C.线性表中的每个结点都有且只有一个直接前趋和直接后继。 D.存在这样的线性表:表中各结点都没有直接前趋和直接后继。

数据结构 第2章习题答案

第2章习题答案 一、填空 1. 【严题集 2.2①】在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。 2. 线性表中结点的集合是有限的,结点间的关系是一对一的。 3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。 4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。 5. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。 6. 【严题集2.2①】顺序表中逻辑上相邻的元素的物理位置必定相邻。单链表中逻辑上相邻的元素的物理位置不一定相邻。 7. 【严题集2.2①】在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。 8.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。二、判断正误(在正确的说法后面打勾,反之打叉) (×)1. 链表的每个结点中都恰好包含一个指针。 答:错误。链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针域, 分别存放指向其直接前趋和直接后继结点的指针。 (×)2. 链表的物理存储结构具有同链表一样的顺序。错,链表的存储结构特点是无序,而链表的示意图有序。(×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。错,链表的结点不会移动,只是指针内容改变。 (×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。 (×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 错,正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜” (×)6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 错,前一半正确,但后一半说法错误,那是链式存储的优点。顺序存储方式插入、删除运算效率较低, 在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。 (×)7. 线性表在物理存储空间中也一定是连续的。 错,线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。 (×)8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。 错误。线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相邻。(×)9. 顺序存储方式只能用于存储线性结构。 错误。顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如完全二叉树是属于非 线性结构,但其最佳存储方式是顺序存储方式。(后一节介绍) (×)10. 线性表的逻辑顺序与存储顺序总是一致的。 错,理由同7。链式存储就无需一致。 三、单项选择题 (C)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为: (A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构( B )2.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(A)110 (B)108 (C)100 (D)120 ( A )3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是: (A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) (B)在第i个结点后插入一个新结点(1≤i≤n) (C)删除第i个结点(1≤i≤n)

数据结构课后习题答案第2章

第 2 章线性表 2005-07-14 第 2 章线性表 课后习题讲解 1. 填空 ⑴在顺序表中,等概率情况下,插入和删除一个元素平均需移动()个元素,具体移动元素的个数与()和()有关。 【解答】表长的一半,表长,该元素在表中的位置 ⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。【解答】108 【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108 ⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。 【解答】p->next=(p->next)->next ⑷单链表中设置头结点的作用是()。 【解答】为了运算方便 【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。 ⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。 【解答】p->next=head 【分析】如图2-8所示。 ⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。 【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next; rear->next->next=q->next; delete q; 【分析】操作示意图如图2-9所示:

⑺一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为();在给定值为x的结点后插入一个新结点的时间复杂度为()。 【解答】Ο(1),Ο(n) 【分析】在p所指结点后插入一个新结点只需修改指针,所以时间复杂度为Ο(1);而在给定值为x的结点后插入一个新结点需要先查找值为x的结点,所以时间复杂度为Ο(n)。 ⑻可由一个尾指针唯一确定的链表有()、()、()。 【解答】循环链表,循环双链表,双链表 2. 选择题 ⑴线性表的顺序存储结构是一种()的存储结构,线性表的链接存储结构是一种()的存储结构。 A 随机存取 B 顺序存取 C 索引存取 D 散列存取 【解答】A,B 【分析】参见2.2.1。 ⑵线性表采用链接存储时,其地址()。 A 必须是连续的 B 部分地址必须是连续的 C 一定是不连续的 D 连续与否均可以 【解答】D 【分析】线性表的链接存储是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续,也可以不连续,甚至可以零散分布在内存中任意位置。 ⑶单循环链表的主要优点是()。 A 不再需要头指针了 B 从表中任一结点出发都能扫描到整个链表; C 已知某个结点的位置后,能够容易找到它的直接前趋; D 在进行插入、删除操作时,能更好地保证链表不断开。 【解答】B ⑷链表不具有的特点是()。 A 可随机访问任一元素 B 插入、删除不需要移动元素 C 不必事先估计存储空间 D 所需空间与线性表长度成正比 【解答】A ⑸若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋,则采用()存储方法最节省时间。 A 顺序表 B 单链表 C 双链表 D 单循环链表 【解答】A

《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案数据结构 第一章介绍 数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。数据结构的选择对于算法的效率有着重要的影响。本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。下面是一些选定的习题及其答案,供读者参考。 第二章线性表 习题一: 给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。 答案一: 算法思路: 1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素 2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置 3. 当i>=j时,停止逆置 算法实现: ```python

def reverse_list(L): i, j = 0, len(L)-1 while i < j: L[i], L[j] = L[j], L[i] i += 1 j -= 1 ``` 习题二: 给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。 答案二: 算法思路: 1. 遍历线性表B中的每一个元素 2. 将B中的元素依次插入到A的末尾 算法实现: ```python def merge_lists(A, B): for element in B: A.append(element)

``` 第三章栈和队列 习题一: 编写一个算法,判断一个表达式中的括号是否匹配。表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。 答案一: 算法思路: 1. 遍历表达式中的每一个字符 2. 当遇到左括号时,将其推入栈中 3. 当遇到右括号时,判断栈顶元素是否与其匹配 4. 当遇到其他字符时,继续遍历下一个字符 5. 最后判断栈是否为空,若为空则表示括号匹配 算法实现: ```python def is_matching(expression): stack = [] for char in expression: if char in "([{":

数据结构第2章线性表习题及答案

第2章自测卷答案 一、填空 1. 【严题集 2.2①】在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。 2. 线性表中结点的集合是有限的,结点间的关系是一对一的。 3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。 4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。 5. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。 6. 【严题集2.2①】顺序表中逻辑上相邻的元素的物理位置必定相邻。单链表中逻辑上相邻的元素的物理位置不一定相邻。 7. 【严题集2.2①】在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。 8.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。二、判断正误(在正确的说法后面打勾,反之打叉) (×)1. 链表的每个结点中都恰好包含一个指针。 答:错误。链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针 域,分别存放指向其直接前趋和直接后继结点的指针。 (×)2. 链表的物理存储结构具有同链表一样的顺序。错,链表的存储结构特点是无序,而链表的示意图有序。(×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。错,链表的结点不会移动,只是指针内容改变。 (×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。 (×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 错,正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜” (×)6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 错,前一半正确,但后一半说法错误,那是链式存储的优点。顺序存储方式插入、删除运算效率较低, 在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。 (×)7. 线性表在物理存储空间中也一定是连续的。 错,线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。 (×)8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。 错误。线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相邻。(×)9. 顺序存储方式只能用于存储线性结构。 错误。顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如完全二叉树是属于 非线性结构,但其最佳存储方式是顺序存储方式。(后一节介绍) (×)10. 线性表的逻辑顺序与存储顺序总是一致的。 错,理由同7。链式存储就无需一致。 三、单项选择题 (C)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构( B )2.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(A)110 (B)108 (C)100 (D)120 ( A )3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是: (A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) (B)在第i个结点后插入一个新结点(1≤i≤n)

数据结构课后习题答案第二章 线性表

第二章线性表 2.1描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。 并说明头指针和头结点的作用。 答:头指针是一个指针变量,里面存放的是链表中首结点的地址,并以此来标识一个链表。如链表H,链表L等,表示链表中第一个结点的地址存放在H、L中。头结点是附加在第一个元素结点之前的一个结点,头指针指向头结点。当该链表表示一个非空的线性表时,头结点的指针域指向第一个元素结点,为空表时,该指针域为空。 开始结点指第一个元素结点。 头指针的作用是用来惟一标识一个单链表。 头结点的作用有两个:一是使得对空表和非空表的处理得以统一。二是使得在链表的第一个位置上的操作和在其他位置上的操作一致,无需特殊处理。 2.2填空题 1、在顺序表中插入或删除一个元素,需要平均移动(表中一半)元素,具体移动的元素个数与(表长和该元素在表中的位置)有关。 2、顺序表中逻辑上相邻的元素的物理位置(必定)相邻。单链表中逻辑上相邻的元素的物理位置(不一定)相邻。 3、在单链表中,除了首元结点外,任一结点的存储位置由(其直接前驱结点的链域的值)指示。 4、在单链表中设置头结点的作用是(插入和删除元素不必进行特殊处理)。 2.3何时选用顺序表、何时选用链表作为线性表的存储结构为宜? 答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑: 1.基于空间的考虑。当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。 2.基于时间的考虑。若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。并且,若链表的插入和删除主要发生在

数据结构课后习题与解析第二章

第二章习题 1.描述以下三个概念的区别:头指针,头结点,首元素结点。 2.填空: (1)在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。 (2)在顺序表中,逻辑上相邻的元素,其物理位置相邻。在单链表中,逻辑上相邻的元素,其物理位置相邻。 (3)在带头结点的非空单链表中,头结点的存储位置 由 指示,首元素结点的 存 储位置由指示,除首元素结点外,其它任一元素结点的存储位 置由指示。 3.已知 L 是无表头结点的单链表, 且P 结点既不是首元素结点,也不是尾元素结点。按要求从下列语句中选择合适的语句序 列。 a. 在 P 结点后插入 S 结点的语句序列是:。 b. 在 P 结点前插入 S 结点的语句序列是:。 c. 在表首插入 S结点的语句序列 是:。 d. 在表尾插入 S 结点的语句序列 是:。 供选择的语句有: (1) P->next=S; (2) P->next= P->next->next; (3) P->next= S->next; (4) S->next= P->next; (5) S->next= L; (6) S->next= NULL; (7) Q= P; (8) while(P->next!=Q) P=P->next; (9) while(P->next!=NULL) P=P->next; (10) P= Q; (11) P= L; (12) L= S; (13) L= P; 4. 设线性表存于 a(1:arrsize)的前 elenum 个分量中且递增有序。试写一算 法,将 X 插入 到 线性表的适当位置上,以保持线性表的有序性。 5. 写一算法,从顺序表中删除自第i 个元素开始 的k 个元素。 6.已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高 效算法,删除表中所有大于mink 且小于 maxk 的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的两个参变量,它们的值为任意的整数)。 7.试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将 线性表(a1, a2..., an)逆置为( an, an-1,..., a1)。 (1)以一维数组作存储结构,设线性表存于a(1:arrsize)的前 elenum 个分量中。 (2)以单链表作存储结构。 8. 假设两个按元素值递增有序排列的线性表 A 和 B,均以单链表作为存储结构,请编写算法,将 A 表和 B 表归并成一个按元素值递减有序排列的线性表C,并要求利用原表(即 A

数据结构(线性表)习题与答案

1、线性表是具有n个 ______ 的有限序列。 A.数据项 B.字符 C.数据元素 D.表元素 正确答案:C 2、线性表是 _______。 A.一个无限序列,可以为空 B.一个有限序列不可以为空 C.一个无限序列,不可以为空 D.一个有限序列,可以为空 正确答案:D 3、关于线性表的正确说法是 _______。 A.每个元素都有一个前驱和一个后继元素 B.除第一个元素和最后一个元素外,其余元素有且仅有一个前驱和一个后继元素 C.表中元素的排序顺序必须是由小到大或由大到小 D.线性表中至少有一个元素 正确答案:B 4、线性表采用链表存储时,其存放各个元素的单元地址是 _______。 A.连续与否均可以 B.部分地址必须是连续的 C.一定是不连续的 D.必须是连续的

5、链表不具备的特点是 _______。 A.插入删除不需要移动元素 B.所需空间与其长度成正比 C.不必事先估计存储空间 D.可随机访问任一节点 正确答案:D 6、线性表的静态链表存储结构与顺序存储结构相比,优点是 _______。 A.所有的操作算法实现简单 B.便于利用零散的存储器空间 C.便于随机存取 D.便于插入和删除 正确答案:D 7、线性表的顺序存储结构和链式存储结构相比,优点是 _______。 A.便于随机存取 B.便于插入和删除 C.所有的操作算法实现简单 D.节省存储空间 正确答案:A 8、设线性表有n个元素,以下操作中,_______在顺序表上实现比在链表上实现效率高。 A.交换第1个元素第2个元素的值 B.输出与给定值x相等的元素在线性表中的符号 C.输入第i(1<=i<=n)个元素值

第二章 线性表 答案

数据结构与算法上机作业第二章线性表

一、选择题 1、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新的元素算法的时间复杂度为 C 。 A. O(log2n) B. O(1) C. O(n) D. O(n2) 2、以下关于线性表的说法中,不正确的是 C 。 A. 线性表中的数据元素可以是数字、字符、结构等不同类型 B. 线性表中包含的数据元素个数不是任意的 C. 线性表中的每一个结点都有且只有一个直接前驱和直接后继 D. 存在这样的线性表:表中各结点都没有直接前驱和直接后继 3、在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为 B 。 A. O(1) B. O(n) C. O(n2) D. O(log2n) 4、等概率情况下,在有n个结点的顺序表上做插入结点操作,需平均移动的结点数目为 C 。提示:插入的位置有n+1个,移动总数为:1+2+3+……+n A. n B. (n-1)/2 C. n/2 D. (n+1)/2 5、在一个长度为n的顺序存储的线性表中查找值为x的元素时,平均查找长度(及x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。 A. n B. n/2 C. (n+1)/2 D. (n-1)/2 6、在顺序表中,只要知道 D ,就可以求出任一结点的存储地址。 A. 基地址 B. 结点大小 C. 向量大小 D. 基地址和结点大小 7、将两个各有n个元素的有序表归并为一个有序表,其最少的比较次数是 A 。 A. n B. 2n-1 C. 2n D. n-1 8、线性表采用链表存储时其存储地址要求 D 。 A. 必须是连续的 B. 部分地址必须是连续的 C. 必须是不连续的 D. 连续的和不连续的都可以 9、下面关于线性表的描述中,错误的是 B 。 A. 线性表采用顺序存储,必须占用一片连续的存储单元 B. 线性表采用顺序存储,便于进行插入和删除操作 C. 线性表采用链式存储,不必占用一片连续的存储单元 D. 线性表采用链式存储,便于插入和删除操作 10、向具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是 B A. O(1) B. O(n) C. O(n2) D. O(log2n) 11、在一个带头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行的语句是 D 。 A. HL=p; p->next=HL; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. p->next=HL->next; HL->next=p; 12、在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行的语句是C 。 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; 13、设有编号为1, 2, 3, 4的4辆列车,顺序进入一个栈结构的站台,下列不可能的出栈顺序为 D 。 A. 1234 B. 1243 C. 1324 D. 1423 14、4个元素按A, B, C, D顺序进入S栈,执行两次Pop(S, x)运算后,栈顶元素的值是B 。

数据结构(线性表)练习题与答案1

数据结构(线性表)练习题与答案1 1、线性表是()。 A.一个有限序列,可以为空 B.一个有限序列,不可以为空 C.一个无限序列,可以为空 D.一个无限序列,不可以为空 正确答案:A 解析:线性表是具有n(n≥0)个数据元素的有限序列。 2、线性表的基本运算ListInsert(&L,i,e)表示在线性表L中第i 个位置上插入一个元素e,若L的长度为n,则i的合法取值是()。 A.1≤i≤n B.1≤i≤n+1 C.0≤i≤n-1 D. 0≤i≤n 正确答案:B 解析:线性表的基本运算ListInsert(&L,i,e)中,位置i是指逻辑序号,可以在L的位置1到位置n+1插入元素。 3、顺序表具有随机存取特性,指的是()。 A.查找值为x的元素与顺序表中元素个数n无关 B.查找值为x的元素与顺序表中元素个数n有关 C.查找序号为i的元素与顺序表中元素个数n无关 D.查找序号为i的元素与顺序表中元素个数n有关 正确答案:C 解析:一种存储结构具有随机存取特性指的是,对于给定的序号i,在O(1)时间内找到对应元素值。 4、在顺序表中删除一个元素所需要的时间()。 A.与删除元素的位置及顺序表的长度都有关 B.只与删除元素的位置有关 C.与删除任何其他元素所需要的时间相等

D.只与顺序表的长度有关 正确答案:A 解析:当从顺序表中删除元素时,为了保持顺序表的逻辑特性,需要移动元素以覆盖该删除的元素。因此在顺序表中删除一个元素与该元素的位置及顺序表的长度都有关。 5、在n(n>1)个运算的顺序表中,算法时间复杂度为O(1)的运算是()。 A.访问第i个元素(2≤i≤n)并求其前驱元素 B.在第i个元素之后插入一个新元素 C.删除第i个元素 D.将这n个元素递增排序 正确答案:A 解析:访问第i个元素(2≤i≤n)即L->data[i-1]和求其前驱元素L->data[i-2]的时间复杂度均为O(1)。 6、关于线性表的顺序存储结构和链式存储结构的描述中,正确的是()。 Ⅰ.线性表的顺序存储结构优于链式存储结构 Ⅱ.顺序存储结构比链式存储结构的存储密度高 Ⅲ.如需要频繁插入和删除元素,最好采用顺序存储结构 Ⅳ.如需要频繁插入和删除元素,最好采用链式存储结构 A.Ⅰ、Ⅱ、Ⅲ B.Ⅱ、Ⅳ C.Ⅱ、Ⅲ D.Ⅲ、Ⅳ 正确答案:B 解析:线性表的顺序存储结构和链式存储结构各有优缺点,不能简单比较好坏,所以Ⅰ错误。链式存储结构使用指针表示逻辑关系,所以存储密度比较低,所以Ⅱ正确。如频繁使用插入和删除操作,链式存储结构更优于顺序存储结构,所以Ⅲ错误,Ⅳ正确。 7、在单链表中,增加一个头节点的目的是为了()。

《数据结构》吕云翔编著第2章线性表习题解答

数据结构第二章习题解答 一、单选题 1.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移(B)个元素。 A、n-i B、n-i+1 C、n-i-1 D、i 2.在一个长度为n的顺序存储线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次前移(A)个元素。 A、n-i B、n-i+1 C、n-i-1 D、i 3. 在一个长度为n的线性表中顺序查找值为x的元素时,在等概率情况下,查找成功时的平均查找长度(即需要比较的元素个数)为( C )。 A. n B. n/2 C. (n+1)/2 D. (n-1)/2 4.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为(C )。 A. (n+1)/2 B. n/2 C. n D. n+1 5. 在一个顺序表的表尾插入一个元素的时间复杂度为(B )。 A. O(n) B. O(1) C. O(n*n) D. O(log2n) 6.若一个结点的引用为p,它的前驱结点的引用为q,则删除p的后继结点的操作为(B )。 A. p=p.next.next B. p.next=p.next.next C. q.next=p.next D. q.next=q.next.next 8. 假定一个多项式中x的最高次幂为n,则在保存所有系数项的线性表表示中,其线性表长度为(A )。 A. n+1 B. n C. n-1 D. n+2

二、填空题 1.对于当前长度为n的线性表,共包含有________多个插入元素的位置,共包含有________多个删除元素的位置。(答案n+1 n) 2.若经常需要对线性表进行表尾插入和删除运算,则最好采用________存储结构,若经 常需要对线性表进行表头插入和删除运算,则最好采用________存储结构。(答案:顺序链式) 3.由n个元素生成一个顺序表,若每次都调用插入算法把一个元素插入到表头,则整个算法的时间复杂度为________,若每次都调用插入算法把一个元素插入到表尾,则整个算法的时间复杂度为________。(答案:O(n)O(n)) 4.由n个元素生成一个单链表,若每次都调用插入算法把一个元素插入到表头,则整个算法的时间复杂度为________,若每次都调用插入算法把一个元素插入到表尾,则整个算法的时间复杂度为________。(答案:O(1)O(1)) 5. 对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为________, 在表尾插入元素的时间复杂度为________。(答案:O(n),O(1)) 6. 对于一个单链接存储的线性表,在表头插入结点的时间复杂度为________,在表尾插 入结点的时间复杂度为________。(答案:O(1),O(1)) 7. 从一个顺序表和单链表中访问任一个给定位置序号的元素(结点)的时间复杂度分别 为________和_______。(答案:O(1),O(n)) 三、算法设计题 1. 修改从顺序存储的集合中删除元素的算法,要求当删除一个元素后检查数组空间的大小,若空间利用率小于40%同时数组长度大于maxSize时则释放数组的一半存储空间。public void remove(int i) throws Exception{

(完整版)数据结构第二章线性表1答案

(A )需经常修改L 中的结点值 (E )需不断对L 进行删除插入 第二部分线性表 、选择题 1 •关于顺序存储的叙述中,哪一条是不正确的 (B ) A. 存储密度大 B. 逻辑上相邻的结点物理上不必邻接 C. 可以通过计算直接确定第 i 个结点的位置 D. 插入、删除操作不方便 2.长度为n 的单链表连接在长度为 m 的单链表后的算法的时间复杂度为 (C ) A 0( n ) B 0(1) C 0(m ) D 0(m+n ) 3 .在n 个结点的顺序表中,算法的时间复杂度是 0(1)的操作是:(A ) A 访问第i 个结点(1<=i<=n )和求第i 个结点的直接前趋(2<=i<=n ) B 在第i 个结点(1<=i<=n )后插入一个新结点 C 删除第i 个结点(1<=i<=n ) D 将n 个结点从小到大排序 4.一个向量第一个兀素的存储地址是 100 ,每个兀素的长度为 2 ,则第5 个兀素的地址是 (B ) ( A ) 110 ( B ) 108 (C ) 100 ( D ) 120 5 .已知一个顺序存储的线性表, 设每个结点需要占 m 个存储单元,若第一个结点的地址为 da , 则第i 个结点的地址为:(A ) 7 .链表是一种采用( B )存储结构存储的线性表。 (A )顺序 (B )链式 (C )星式 (D )网状 8 .线性表若采用链式存储结构时,要求内存中可用存储单兀的地址: (D ) (A )必须是连续的 (B )部分地址必须是连续的 (C )一定是不连续的 (D )连续或不连续都可以 9 .线性表L 在_ ( B )情况下适用于使用链式结构实现。 A ) da+(i-1)*m B ) da+i*m 6.在具有n 个结点的单链表中,实现( A )遍历链表和求链表的第 i 个结点 C )删除开始结点 C ) da-i*m D ) da+(i+1)*m A )的操作,其算法的时间复杂度为 0(n )。 B )在地址为p 的结点之后插入一个结点 D ) 删除地址为p 的结点的后继结点

相关文档
最新文档