- 8
- 0
- 约1.77万字
- 约 18页
- 2016-12-09 发布于重庆
- 举报
C第六章习题解答.
模板与数据结构习题
一、.基本概念与基础知识自测题
6.1 填充题
6.1.1 模板是为了实现代码的 (1) ,它把数据类型改为一个 (2) ,称为 (3) 程序设计。模板包括 (4) 和 (5) 。
答案:(1)重用
(2)设计参数
(3)参数化(parameterize)
(4)函数模板(function template)
(5)类模板(class template)
6.1.2 调用函数模板时,可以显式指定模板参数类型,也可以隐式进行,称为 (1) ,这是根据 (2) 来决定的。
答案:(1)模板实参推演(template argument deduction)
(2)一组实际类型或(和)值
6.1.3 顺序查找可以用于 (1) 线性表,而对半查找可以用于 (2) 线性表。
答案:(1)无序的(所有)
(2)有序的
6.1.4 最常见的排序方式有 (1) 、 (2) 和 (3) 。如果现有一个已排好序的线性表,在表尾添加了一个元素,采用 (4) 排序法使它重新成为有序的所需工作量最小。
答案:(1)选择
(2)插入
(3)交换
(4)交换(可利用原来的有序性)
6.1.5 给出以下指针的说明方式:指向一个4元素整型数组的指针为 (1) ;指向一个返回整型数,参数为两个整型数的函数的指针 (2) ;指向一个数组的指针,而该数组元素都是指向一个返回整型指针的无参函数 (3) 。
答案:(1)int(*p)[4]
(2)int(*p)(int,int)
(3)以指向6元素数组为例:int*(*)() (*p)[6]
6.2简答题
需要编写一个对多维数组通用的算法(即各维的大小未定),怎样才能把实参多维数组的信息全部传递到函数中去?
答:最佳方法是用函数模板,多维数组用模板类型参数传递,各维的大小作为参数传递。也可以用一维数组加各维的大小都作为参数传递。
什么叫函数模板?什么叫模板函数?什么叫类模板?什么叫模板类?
答:不受数据类型限制的通用型的函数使代码的可重用性大大提高。把数据类型改为一个设计参数是一个可行的方案。这种程序设计类型称为参数化(Parameterize) 程序设计。这样的软件模块由模板(Template) 构造。包括函数模板和类模板。
函数模板定义如下:
template模板参数表 返回类型 函数名(形式参数表){
……;//函数体
}
模板参数主要是模板类型参数。模板类型参数代表一种潜在的内置或用户定义的类型,由关键字typename或class后加一个标识符构成。函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,简化重载函数的设计。
由调用函数模板(functron template) 而生成的函数,称为模板函数(template function)。
类模板定义如下:
template模板参数表 class 类名{
……;//类声明体
};
模板参数有两种:模板类型参数和模板非类型参数。模板类型参数(template type parameter),它代表一种类型,由关键字 typename或class后加一个标识符。模板非类型参数由一个普通的参数声明构成。模板非类型参数表示该参数名代表了一个潜在的常量。如数组类模板,可以有一个数组长度的非类型参数。
为通用的类模板定义中的模板类型参数指定了具体类型而生成的类称为模板类。
什么叫线性表?其基本操作包括哪些?其中插入一个元素的关键在哪儿?
答:线性表是数据结构中的概念:每两个相邻元素之间都有直接前驱和直接后继的关系。这里除第一个元素外,其他元素有且仅有一个直接前驱,第一个元素没有前驱;除最后一个元素外,其他元素有且仅有一个直接后继,最后一个元素无后继。这样的特性称为线性关系。
基本操作包括:计算表长度,寻找变量或对象x(其类型与表元素相同)在表中的位置(下标值),判断x是否在表中,删除x,将x插入列表中第i个位置,寻找x的后继,寻找x的前驱,判断表是否空,判断表是否满,取第i个元素的值等。
当需要在顺序表的指定位置i插入一个数据x时,必须为它腾出这个位置,把从该位置开始向后的所有元素数据,后移一个位置,最后才插入。关键是后移时从最后一个元素开始。否则先移的数据会冲掉未移的数据。
采用索引查找有哪些优点?它需要被查找数据有序吗?
答:索引,就象一本书的目录,找到标题,再看一下页号,立即可以翻到。索引查找不要求被查找数据有序,只要求索引有序。
简单叙述阅读理解复杂指针的方法。设Node为类,下面两个标识符fa和pa分别代表什么?Node* (*fa(int))(); Node* (*(*pa)[])();
答:理解和构造对象说明的方法是:先撇开标识符,按从右到左的
原创力文档

文档评论(0)