没有合适的资源?快使用搜索试试~ 我知道了~
数据结构练习题-第二章--线性表-习题及答案.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 145 浏览量
2021-10-12
20:18:47
上传
评论
收藏 105KB DOC 举报
温馨提示
试读
21页
数据结构练习题-第二章--线性表-习题及答案.doc
资源详情
资源评论
资源推荐
. . . .
第二章 线性表
一. 名词解释
1. 线性结构 2.数据结构的顺序实现 3.顺序表 4.链表 5.数据结构的实现
6.建表 7.字符串 8.串 9.顺序串 10.链串
二、填空题
1.为了便于讨论,有时将含 n(n>=0)个结点的线性结构表示成(a
1
,a
2
,……a
n
),其中
每个 a
i
代表一个______。a
1
称为______结点,a
n
称为______结点,i 称为 a
i
在线性表中的__
______或______。对任意一对相邻结点 a
i
、a
i┼1
(1<=i<n),a
i
称为 a
i┼1
的直接______a
i┼1
称为
a
i
的直接______。
2.为了满足运算的封闭性,通常允许一种逻辑结构出现不含任何结点的情况。不含任何
结点的线性结构记为______或______。
3.线性结构的基本特征是:若至少含有一个结点,则除起始结点没有直接______外,其
他结点有且仅有一个直接______;除终端结点没有直接______外,其它结点有且仅有一个直
接______.
4.所有结点按 1 对 1 的邻接关系构成的整体就是______结构。
5.线性表的逻辑结构是______结构。其所含结点的个数称为线性表的______,简称____
__.
6.表长为 O 的线性表称为______
7.线性表典型的基本运算包括:______、______、______、______、______、______等
六种。
8.顺序表的特点是______。
9.顺序表的类型定义可经编译转换为机器级。假定每个 datatype 类型的变量占用
k(k>=1)个存单元,其中,b 是顺序表的第一个存储结点的第一个单元的存地址,那么,
第 i 个结点 a
i
的存储地址为______。
10.以下为顺序表的插入运算,分析算法,请在______处填上正确的语句。
Void insert_sqlist(sqlistL,datatypex,inti)
/*将 X 插入到顺序表 L 的第 i-1 个位置*/
{ if( L.last == maxsize) error(“表满”);
if((i<1)||(i>L.last+1))error(“非法位置”);
for(j=L.last;j>=i;j--)______;
L.data[i-1]=x;
L.last=L.last+1;
}
11.对于顺序表的插入算法 insert_sqlist 来说,若以结点移动为标准操作,则插入算法
的最坏时间复杂性为________,量级是________。插入算法的平均时间复杂性为________,
平均时间复杂性量级是________。
12.以下为顺序表的删除运算,分析算法,请在________处填上正确的语句。
void delete_sqlist(sqlist L,int i) /*删除顺序表 L 中的第 i-1 个位置上的结点*/
{if((i<1)||(i>L.last))error(“非法位置”);
for(j=i+1;j=L.last;j++)________;
L.last=L.last-1;
}
13.对于顺序表的删除算法 delete_sqlist 来说,若以结点移动为标准操作,最坏情况
时间复杂性与其量级分别是________和________,其平均时间复杂性与其量级分别为_______
1 / 21
. . . .
_和________。
14.以下为顺序表的定位运算,分析算法,请在________处填上正确的语句。
int locate_sqlist(sqlist L,datatype X)
/*在顺序表 L 中查找第一值等于 X 的结点。若找到回传该结点序号;否则回传 0*/
{________;
while((i≤L.last)&&(L.data[i-1]!=X))i++;
if(________)return(i);
else return(0);
}
15.对于顺序表的定位算法,若以取结点值与参数 X 的比较为标准操作,平均时间复杂
性量级为________。求表长和读表元算法的时间复杂性为________。
16.在顺序表上,求表长运算 LENGTH(L)可通过输出________实现,读表元运算
GET(L,i)可通过输出________实现。
17.线性表的常见链式存储结构有________、________和________。
18.单链表表示法的基本思想是用________表示结点间的逻辑关系。
19.所有结点通过指针的而组织成________。
20.为了便于实现各种运算,通常在单链表的第一个结点之前增设一个类型相同的结点,
称为________,其它结点称为________。
21.在单链表中,表结点中的第一个和最后一个分别称为 ________和________。头结点
的数据域可以不存储________,也可以存放一个________或________。
22.单链表 INITIATE(L)的功能是建立一个空表。空表由一个________和一个_______
_组成。
23.INITIATE()的功能是建立一个空表。请在________处填上正确的语句。
lklist initiate_lklist() /*建立一个空表*/
{________________;
________________;
return(t);
}
24.以下为求单链表表长的运算,分析算法,请在 ________处填上正确的语句。
int length_lklist(lklist head) /*求表 head 的长度*/
{________;
j=0;
while(p->next!=NULL)
{________________;
j++;
}
return(j); /*回传表长*/
}
25.以下为单链表按序号查找的运算,分析算法,请在____处填上正确的语句。
pointer Knd_lklist(lklist head,int i)
{ p=head;j=0;
while(________________)
{ p=p->next; j++; }
if(i==j) return(p);
2 / 21
. . . .
else return(NULL);
}
26.以下为单链表的定位运算,分析算法,请在____处填上正确的语句。
int locate_lklist(lklist head,datatype x)
/*求表 head 中第一个值等于 x 的结点的序号。不存在这种结点时结果为 0*/
{ p=head;j=0;
while(________________________________){p=p->next;j++;}
if (p->data==x) return(j);
else return(0);
}
27.以下为单链表的删除运算,分析算法,请在____处填上正确的语句。
void delete_lklist(lklist head,int i)
{ p=Knd_lklist(head,i-1);
if(____________________________)
{ q=________________;
p->next=p->next;
free(q);
}
else error(“不存在第 i 个结点”)
}
28.以下为单链表的插入运算,分析算法,请在____处填上正确的语句。
void insert_lklist(lklist head,datatype x,int i)
/*在表 head 的第 i 个位置上插入一个以 x 为值的新结点*/
{ p=Knd_lklist(head,i-1);
if(p==NULL)error(“不存在第 i 个位置”);
else {s=________________;s->data=x;
s->next=________________;
p->next=s;
}
}
29.以下为单链表的建表算法,分析算法,请在____处填上正确的语句。
lklist create_lklist1()
/*通过调用 initiate_lklist 和 insert_lklist 算法实现的建表算法。假定$是完毕标志*/
{ ininiate_lklist(head);
i=1;
scanf(“%f”,&x);
while(x!=’$’)
{________________;
________________;
scanf(“%f”,&x);
}
return(head);
}
该建表算法的时间复杂性约等于____________,其量级为____________。
3 / 21
. . . .
30.以下为单链表的建表算法,分析算法,请在____处填上正确的语句。
lklist create_lklist2() /*直接实现的建表算法。*/
{ head=malloc(size);
p=head;
scanf(“%f”,&x);
while(x!=’$’)
{ q=malloc(size);
q->data=x;
p->next=q;
________________;
scanf(“%f”,&x);
}
________________;
return(head);
}
此算法的量级为________________。
31.除单链表之外,线性表的链式存储结构还有_________和_________等。
32.循环链表与单链表的区别仅仅在于其尾结点的链域值不是_________,而是一个指
向_________的指针。
33.在单链表中若在每个结点中增加一个指针域,所含指针指向前驱结点,这样构成的
链表中有两个方向不同的链,称为______。
34.C 语言规定,字符串常量按______处理,它的值在程序的执行过程中是不能改变
的。而串变量与其他变量不一样,不能由______语句对其赋值。
35.含零个字符的串称为______串,用______表示。其他串称为______串。任何串中
所含______的个数称为该串的长度。
36.当且仅当两个串的______相等并且各个对应位置上的字符都______时,这两个串
相等。一个串中任意个连续字符组成的序列称为该串的______串,该串称为它所有子串的__
____串。
37.串的顺序存储有两种方法:一种是每个单元只存一个字符,称为______格式,另
一种是每个单元存放多个字符,称为______格式。
38.通常将链串中每个存储结点所存储的字符个数称为______。当结点大小大于 1 时,
链串的最后一个结点的各个数据域不一定总能全被字符占满,此时,应在这些未用的数据域
里补上______。
三、单向选择题
1.对于线性表基本运算,以下结果是正确的是 ( )
① 初始化 INITIATE(L),引用型运算,其作用是建立一个空表 L=Ф
. ② 求表长 LENGTH(L),引用型运算,其结果是线性表 L 的长度
③ 读表元 GET(L,i), 引用型运算。若 1<=i<=LENGTH(L),其结果是线性表 L 的第 i 个结点;
否则,结果为 0
④ 定位 LOCATE(L,X), 引用型运算.若 L 中存在一个或多个值与 X 相等的结点,运算结果为
这些结点的序号的最大值;否则运算结果为 0
⑤ 插入 INSERT(L,X,i),加工型运算。其作用是在线性表 L 的第 i+1 个位置上增加一个以 X
为值的新结点
⑥ 删除 DELETE(L,i), 引用型运算.其作用是撤销线性表 L 的第 i 个结点 Ai
4 / 21
. . . .
2.线性结构中的一个结点代表一个 ( )
① 数据元素 ② 数据项 ③ 数据 ④ 数据结构
3.顺序表的一个存储结点仅仅存储线性表的一个 ( )
① 数据元素 ② 数据项 ③ 数据 ④ 数据结构
4.顺序表是线性表的 ( )
① 链式存储结构 ②顺序存储结构 ③ 索引存储结构 ④ 散列存储结构
5.对于顺序表,以下说法错误的是 ( )
① 顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址
② 顺序表的所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列
③ 顺序表的特点是:逻辑结构中相邻的结点在存储结构中仍相邻
④ 顺序表的特点是:逻辑上相邻的元素,存储在物理位置也相邻的单元中
6.对顺序表上的插入、删除算法的时间复杂性分析来说,通常以( )为标准操作
① 条件判断 ②结点移动
③ 算术表达式 ④赋值语句
7.对于顺序表的优缺点,以下说法错误的是 ( )
① 无需为表示结点间的逻辑关系而增加额外的存储空间
② 可以方便地随机存取表中的任一结点
③ 插人和删除运算较方便
④ 由于顺序表要求占用连续的空间,存储分配只能预先进行(静态分配)
⑤ 容易造成一部分空间长期闲置而得不到充分利用
8.指针的全部作用就是 ( )
① 指向某常量 ② 指向某变量
③ 指向某结点 ④存储某数据
9.除了( ) ,其它任何指针都不能在算法中作为常量出现,也无法显示。
① 头指针 ②尾指针
③ 指针型变量 ④空指针
10.单链表表示法的基本思想是指针 P 表示结点间的逻辑关系,则以下说法错误的是(
)
① 任何指针都不能用打印语句输出一个指针型变量的值
② 如果要引用(如访问)p 所指结点,只需写出 p(以后跟域名)即可
③ 若想修改变量 p 的值(比如让 P 指向另一个结点),则应直接对 p 赋值
④ 对于一个指针型变量 P 的值。只需知道它指的是哪个结点
⑤ 结点*p是由两个域组成的记录,p->data 是一个数据元素,p->next 的值是一个指针
11.单链表的一个存储结点包含 ( )
① 数据域或指针域
② 指针域或链域
③ 指针域和链域
④ 数据域和链域
12.对于单链表表示法,以下说法错误的是 ( )
① 数据域用于存储线性表的一个数据元素
② 指针域或链域用于存放一个指向本结点所含数据元素的直接后继所在结点的指针
③ 所有数据通过指针的而组织成单链表
④NULL 称为空指针,它不指向任何结点,只起标志作用
13.对于单链表表示法,以下说法错误的是 ( )
5 / 21
剩余20页未读,继续阅读
beibeidzh
- 粉丝: 8
- 资源: 24万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1