数据结构第2章基础习题 作业
数据结构第二章习题(1)
A. p=p->next;
B. p->next=p->next->next;
C. p->next=p;
D. p=p->next->next;
28. 在 头 指 针 为 head 且 表 长 大 于 1 的 单 循 环 链 表 中 , 指 针 p 指 向 表 中 某 个 结 点 , 若
p->next->next==head,则( )。
D. q->next=p->next;q->prior=p;p->next=q;p->next=q;
8.线性表采用链式存储时,结点的存储地址( )。
A. 必须是连续的
B. 必须是不连续的
C. 连续与否均可
D. 和头结点的存储地址相连续
9.在一个长度为n的顺序表中删除第i个元素,需要向前移动( )个元素。
A. 访问第i个元素的前驱(1< i n )
B. 在第i个元素之后插入一个新元素(1 i n ) C. 删除第i个元素(1 i n )
D. 对顺序表中元素进行排序 23.已知指针p和q分别指向某单链表中第一个结点和最后一个结点。假设指针s指向另一个
单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为( )。
C. 在进行插入、删除运算时能保证链表不断开
数据结构课后习题及解析第二章
for(j=1;j<=n;j++) /*建立链表*/
{
p=(Node*)malloc(sizeof(Node));
if(p!=NULL)
{
printf("请输入第%d个人的密码:",j);
scanf("%d",&C);
p->password=C;
p->num=j;
r->next=p;
p=L->next;
q=p->next;
p->next=NULL; /*摘下第一个结点,生成初始逆置表*/
while(q!=NULL) /*从第二个结点起依次头插入当前逆置表*/
{
r=q->next;
q->next=L->next;
L->next=q;
q=r;
}
}
将线性表A=(a1,a2,……am), B=(b1,b2,……bn)合并成线性表C, 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表中的结点空间构成。注意:单链表的长度值m和n均未显式存储。
数据结构课后习题第2章
题号 1
2
3
答案
4
题号 11 12 13 14 15 16 17 18 19 20
答案
5
1. P 和 Q 两个指针分别指向双向循环表 L 的两个元素,P 所指元素是 Q 所指元素的后继的 条件是( )。
A.P= =Q
B.Q-﹥Next==P
时间复杂度为
5. 线性表顺序存储结构的优点是可以实现
。Байду номын сангаас
6. 不带头结点的单链表 L 为空的条件是
条件是
。
。删除其第 i 个元素的算法的时间复杂度为
7. 两指针 p 和 q,分别指向单链表的两个元素,p 所指元素是 q 所指元素的前导的条件是
。
8. 设双向循环链表中结点的结构为(data, prior, next),若指针 p 指向该链表的某个结点,
D.0(n2)
D.(n+1)/2
D) n-i+1
7
8
D. P-﹥prior==L
9 10
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线0生高不产中仅工资22艺料22高试可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料22荷试,下卷而高总且中体可资配保料置障试时23卷,23调需各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看2工且55作尽22下可2都能护1可地关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编5试求写、卷技重电保术要气护交设设装底备备4置。高调、动管中试电作线资高气,敷料中课并3设试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
数据结构第二章作业及答案
15
其中: SqList :类型名, SqList类型的变量是结构变量,它的三个域分别是: *elem:存放线性表元素的一维数组基址;其存储空间在初始化操作 (建空表)时动态分配; length:存放线性表的表长; listsize:用于存放当前分配 (存放线性表元素)的存储空间的大小。
7
解答(续):
12
解答(续):
四、线性链表的结点类型定义及指向结点的指针类型定义
typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *LinkList; 逆序创建带头结点的单链表的算法操作如下:
(1)建立一个“空表”; (2)输入数据元素an, 建立结点并插入; (3)输入数据元素an-1, 建立结点并插入; (4)依次类推,直至输入a1为止。
4.若某线性表最常用的操作是存取任一指定序号的元素和在最 后进行插入和删除运算,则利用( )存储方式最节省时间。 A.顺序表 B.双向链表 C.带头结点的双向循环链表 1 D.循环链表
5.利用双向链表作线性表的存储结构的优点是什么? A. 便于进行插入和删除的操作 B. 提高按关系查找数据元素的速度 C. 节省空间 D. 便于销毁结构释放空间
9.设线性链表中结点的结构为(data, next)。已知指针q所指结 点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s, 则应执行下列哪一个操作? A. s-> next = 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;
数据结构课后习题与解析第二章
第二章习题
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个元素。
数据结构第2章习题参考答案
2.7 习题
2.7.1知识点:线性表的逻辑结构
一、选择题
1①线性表L=(a
1, a
2
,…,a
n
),下列说法正确的是(D )。
A.每个元素都有一个直接前驱和一个直接后继。
B.线性表中至少要有一个元素。
C.表中诸元素的排列顺序必须是由小到大或由大到小。
D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。
2①在线性表的下列运算中,不改变数据元素之间结构关系的运算是(D )。
A.插入B.删除
C.排序D.定位
3①线性表是具有n 个(C )的有限序列(n>0)。【清华大学1998】
A.表元素B.字符C.数据元素D.数据项E.信息项
二、判断题
(T )1①线性表中的每个结点最多只有一个前驱和一个后继。
( F )2①线性表中的每个结点都至少有一个前驱结点和后继结点。
( F )3①线性表是N个数的有限序列。
(F)4①同一线性表的数据元素可以具有不同的特性。
(T )5①线性表的长度n就是表中数据元素的个数,当n=0时,称为空表。
(T )6①线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短。
( F )7①对线性表中的数据元素只能进行访问,不能进行插入和删除操作。
2.7.2知识点:线性表的顺序存储结构
一、选择题
1①在一个长度为n的顺序表中,在第i个元素(1 <= i <=n+1)之前插入一个新元素时需向后移动( B )个元素.
A.n-1 B.n-i+1 C.n-i-1 D.i
2①若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用(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;
数据结构第2章习题答案
第2章习题答案
●习题2-1
1.79 62 34 57 26 48
2.26 34 48 57 62 79
3.48 56 57 62 79 34
4.56 57 79 34
5.26 34 39 48 57 62
●习题2-3
1.
ElemType delete_min(List &L)
{ int i,len,min;
ElemType e;
if(Emptylist(L)
{printf(‘线性表为空!\n’); exit(1);}
len=LenthList(L);
min=1;
for(i=2;i〈=len;i++)
if(GetList(L,min)〉GetList(L,i))min=i;
e= GetList(L,min);
DeleteList(L,e,min);
InsertList(L,GetList(L,LenthList(L)),min);
return e;
}
2。
bool delete_st(ListTyle &L,ElemType s,ElemType t) {
int i;
ElemType e;
if(Emptylist(L)
{ printf(‘线性表为空!\n’); return false;}
i=1;
while(i〈=LenthList(L))
{
If(GetList(L,i)>=s&&GetList(L,i)<=t)
DeleteList(L,e,i);
else
i++;
}
return ture;
}
void MergeList(List La ,List Lb ,List &Lc ) {
数据结构第二章习题课
1、试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。
答:开始结点是指链表中的第一个结点,也就是没有直接前趋的那个结点。
链表的头指针是一指向链表开始结点的指针(没有头结点时),单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。
头结点是我们人为地在链表的开始结点之前附加的一个结点。有了头结点之后,头指针指向头结点,不论链表否为空,头指针总是非空。而且头指针的设置使得对链表的第一个位置上的操作与在表其他位置上的操作一致(都是在某一结点之后)。
2、何时选用顺序表、何时选用链表作为线性表的存储结构为宜?
答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑:
1) 基于空间的考虑。当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。
2) 基于时间的考虑。若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等操作时,宜采用链表做存储结构。并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。
3、在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?
答:在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点,删除一个结点需平均移动(n-1)/2个结点。具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。i 越接近n则所需移动的结点数越少。
数据结构第二章习题(2)
五、线性表具有两种存储方式,即顺序方式和链接方式。现有一个具有五个元素的线性表
L={23,17,47,05,31},若它以链接方式存储在下列 100~119 号地址空间中,每个结点
由数据(占 2 个字节)和指针(占 2 个字节)组成,如下所示:
05 U 17 X 23 V 31 Y 47 Z
^
^
100
(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
6.链表是一种采用
存储结构存储的线性表;
(A)顺序 (B)链式
(C)星式
(D)网状
7.线性表若采用链式存储结构时,要求内存中可用存储单元的地址:
(A)必须是连续的
(B)部分地址必须是连续的
(C)一定是不连续的
(D)连续或不连续都可以
8.线性表L在
B.p->prior=s;p->prior->next=s;s->prior=p->prior;s->next=p;
C.p->prior->next=s;p->prior=s;s->prior=p->prior;s->next=p;
D.p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior;
数据结构 第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. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。错,链表的结点不会移动,只是指
针内容改变。
(完整版)数据结构课后习题及解析第二章
第二章习题
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插入到线性表的适当位置上,以保持线性表的有序性。
数据结构第二章习题
数据结构第二章习题
第2章线性表
一、单项选择题
1.线性表就是具备n个_________的非常有限序列。
a.表元素b.字符c.数据元素d.数据项2.线性表是_________。
a.一个非常有限序列,可以为空b.一个非常有限序列,不可以为空c.一个无穷序列,可以为空d.一个无穷序列,不可以为空3.线性表使用链表存储时,其地址
_________。
a.必须是连续的b.一定是不连续的c.部分地址必须是连续的d.连续与否均可以4.链表不具备的特点是_________。
a.可以随机出访任一结点b.填入删掉不须要移动元素c.不必事先估算存储空间d.所须要空间与其长度成正比5.设立线性表存有n个元素,以下操作方式中,
_________在顺序单上同时实现比在链表上同时实现效率更高。
a.输出第i(1≤i≤n)个元素值
b.互换第1个元素与第2个元素的值c.顺序输入这n个元素的值
d.输出与给定值x相等的元素在线性表中的序号
6.设立线性表中存有2n个元素,以下操作方式中,_________在单链单上同时实现Obrero在顺序单上同时实现效率更高。a.删掉选定的元素
b.在最后一个元素的后面插入一个新元素c.顺序输出前k个元素
d.互换第i个元素和第2n-i-1个元素的值(i=0,1…,n-1)
7.如果最常用的操作是取第i个结点及其前驱,则采用_________存储方式最节省时间。
a.单链表中b.双链表中
c.单循环链表d.顺序表8.与单链表相比,双链表的优点之一是_________。
a.填入和删掉操作方式更直观b.可以展开随机出访c.可以省略字段指针或表尾指针d.出访前后相连结点更有效率9.率先垂范结点的单链表中l为觑的认定条件就是
工大数据结构第二章作业
数据结构与算法上机作业第二章线性表
一、选择题
1、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新的元素算法的时间复杂度为。
A. O(log2n)
B. O(1)
C. O(n)
D. O(n2)
2、以下关于线性表的说法中,不正确的是。
A. 线性表中的数据元素可以是数字、字符、结构等不同类型
B. 线性表中包含的数据元素个数不是任意的
C.线性表中的每一个结点都有且只有一个直接前驱和直接后继(单项链表)
D.存在这样的线性表:表中各结点都没有直接前驱和直接后继(数组实现)
3、在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为。
A. O(1)
B. O(n)
C. O(n2)
D. O(log2n)
4、等概率情况下,在有n个结点的顺序表上做插入结点操作,需平均移动的结点数目为
。
A. n
B. (n-1)/2
C. n/2
D. (n+1)/2
已经有N个点了,再加一个就是N+1个.假设新加的结点插在第i位,那么后面N+1-i个结点都要往后移动.
i的取值服从1到N+1的平均分布,即概率是1/(N+1).
求期望得N/2,即平均要移动N/2个结点期望有计算公式,这里等于
(N+1-1)*1/(N+1)+(N+1-2)*1/(N+1)+(N+1-3)*1/(N+1)+...+(N+1-N-1)*1/(N+1)=N/2
5、在一个长度为n的顺序存储的线性表中查找值为x的元素时,平均查找长度(及x同元素的平均比较次数,假定查找每个元素的概率都相等)为。
A. n
B. n/2
C. (n+1)/2
D. (n-1)/2
数据结构 第2章习题
第2章线性表
习题
1.设线性表存放在数组A[arrsize]的前num个分量中,且递增有序。试写一算法,将x插入到线性表的适当位置上,并保持线性表的有序性。分析算法的时间复杂度。
2.已知一顺序表A,其元素值非递减有序排列,编写一个算法,删除顺序表中多余的值相同的元素。
3.写一个算法,从一给定的顺序表A中删除值在x~y(x≤y)之间的所有元素,要求以较高的效率来实现。
4.线性表中有n个元素,每个元素是一个字符,现存于数组R[n]中,试写一算法,使R中的字符按字母字符、数字字符和其他字符的顺序排列。要求利用原来的存储空间,元素移动次数最少。
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)运算。
数据结构作业第2章
第2章线性表
1. 填空
⑴在顺序表中,等概率情况下,插入和删除一个元素平均需移动()个元素,具体移动元素的个数与()和()有关。
⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。
⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。
⑷单链表中设置头结点的作用是()。
⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。
⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。
⑺一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为();在给定值为x的结点后插入一个新结点的时间复杂度为()。
⑻可由一个尾指针唯一确定的链表有()、()、()。
2. 选择题
⑴线性表的顺序存储结构是一种()的存储结构,线性表的链接存储结构是一种()的存储结构。
A 随机存取
B 顺序存取
C 索引存取
D 散列存取
⑵线性表采用链接存储时,其地址()。
A 必须是连续的
B 部分地址必须是连续的
C 一定是不连续的
D 连续与否均可以
⑶单循环链表的主要优点是()。
A 不再需要头指针了
B 从表中任一结点出发都能扫描到整个链表;
C 已知某个结点的位置后,能够容易找到它的直接前趋;
D 在进行插入、删除操作时,能更好地保证链表不断开。
⑷链表不具有的特点是()。
A 可随机访问任一元素
B 插入、删除不需要移动元素
C 不必事先估计存储空间
D 所需空间与线性表长度成正比
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章习题
一判断题
1.线性表的逻辑顺序与存储顺序总是一致的。×
2.顺序存储的线性表可以按序号随机存取。
3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。×
4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。×
6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
7.线性表的链式存储结构优于顺序存储结构。
8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。×9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。×
11.线性表中每个元素都有一个直接前驱和一个直接后继。(×)
12.线性表中所有元素的排列顺序必须由小到大或由小到小。(×)
13.静态链表的存储空间在可以改变大小。(×)
14.静态链表既有顺序存储结构的优点,又有动态链表的优点。所以它存取表中第i个元素的时间与i无关。(×)
15.静态链表中能容纳元素个数的最大数在定义时就确定了,以后不能增加。()
16.静态链表与动态链表的插入、删除操作类似,不需要做元素的移动。()
17.线性表的顺序存储结构优于链式结构。(×)
18.在循环单链表中,从表中任一结点出发都可以通过前后的移动操作扫描整个循环链表。(×)
19.在单链表中,可以从头结点开始查找任何一个结点。()
20.在双链表中,可以从任何一结点开始沿同一方向查找到任何其他结点。(×)
二单选题 (请从下列A,B,C,D选项中选择一项)
1.线性表是( ) 。
(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空;
(C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。
,在任何位置上插入或删除操作都是等概率的。插n.对顺序存储的线性表,设其长度为2.
入一个元素时平均要移动表中的()个元素。
(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) 仅有尾指针的单循环链表
)个元素的前趋元素,则采用(i个元素和找第i某线性表中最常用的操作是取第若.10.存储方式最节省运算时间()。
(A) 单链表 (B) 顺序表
(C) 双链表 (D) 单循环链表
11.对一个具有n个元素的线性表,建立其单链表的时间复杂度为()
A)O(n) (B) O(1) (C)O(n) (D)O(logn)2三填空题
2(
1.带头结点的单链表H为空的条件是_______H->next==null___________。
1.非空单循环链表L中*p是尾结点的条件是_____p->next==L_____________。
3.在一个单链表中p所指结点之后插入一个由指针f所指结点,应执行
f->next=p->next________;和p->next=_f____________的操作。
4.在一个单链表中p所指结点之前插入一个由指针s所指结点,可执行以下操作:
s->next=p->next__;
p->next=s;
t=p->data;
p->data= ____ s->data _______;
s->data= ____ t _______;
5.在顺序表中做插入操作时首先检查___是否满_____________。
6.在一个单链表中删除p结点时,应执行下列操作:
q=p->next;
p->data=p->next->data;
p->next=__q->next__________
delete q;
7.在双向链表中,每个结点含有两个指针域,一个指向_____结点,另一个指向____结点。
四算法设计题
1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性。并且分析算法的时间复杂度。
2.已知一顺序表A,其元素值非递减有序排列,编写一个函数删除顺序表中多余的值相同的元素。
3.编写一个函数,从一给定的顺序表A中删除值在x~y(x<=y)之间的所有元素,要求以较高的效率来实现。
提示:可以先将顺序表中所有值在x~y之间的元素置成一个特殊的值,并不立即删除它们,然后从最后向前依次扫描,发现具有特殊值的元素后,移动其后面的元素将其删除掉。
4.线性表中有n个元素,每个元素是一个字符,现存于向量R[n]中,试写一算法,使R中的字符按字母字符、数字字符和其它字符的顺序排列。要求利用原来的存储空间,元素移动次数最小。.
5.线性表用顺序存储,设计一个算法,用尽可能少的辅助存储空间将顺序表中前m个元素和后n个元素进行整体互换。即将线性表
(a, a, … , a, b, b, … , b)改变为:nm2112(b, b, … , b , a, a, … , a)。mn21216.已知带头结点的单链表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,并调整表中结点的次序,使其按访问频度的递减序列排列,以便