没有合适的资源?快使用搜索试试~ 我知道了~
首页C++数据结构习题详解:函数与成员函数差异及引用参数
C++数据结构习题详解:函数与成员函数差异及引用参数
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 160 浏览量
更新于2024-07-03
收藏 8.43MB DOC 举报
本资源是一份针对计算机科学与工程学院的数据结构习题解答文档,主要涵盖了C++编程语言的基础知识,重点讲解了数据结构中的关键概念。文档从0-1章开始,详细解释了函数和成员函数的区别: 1. 函数与成员函数: - 函数是通用的,代表一个特定功能,可以在程序任意位置定义。 - 成员函数是类的组成部分,用于实现类的方法,只能在类的实现文件中定义。 - 调用规则上,常规函数可在作用域内自由调用,而成员函数需通过类或实例调用。 - 作用域方面,常规函数全局可见,而成员函数体现类的封装性,具有继承和多态性。 2. 参数类型: - 输入型参数:调用函数仅传输数据,被调用函数对参数的修改不会影响调用者。 - 输出型参数:通过参数接收被调用函数的结果,实质上是返回值的一种形式,但为了效率,通常使用引用实现。 3. 引用: - 引用是一种别名,它是指向已存在变量的别名,通过引用可以直接操作原始变量。 - 函数的引用类型参数利用这一特性,使得被调用函数对引用参数的修改直接作用于实际参数,实现了输出型参数的功能。 4. 引用类型与常值引用类型: - C++中,引用参数分为值引用和常值引用。值引用会复制实际参数的值,允许被调用函数修改,但不影响原值。 - 常值引用(const引用)则是指针类型,不允许被调用函数修改引用指向的对象,适用于大型对象以节省内存。 通过这份习题解答文档,学习者可以深入理解C++中的数据结构基础概念,并通过解答题目来巩固理论知识和实践技能。对于理解和掌握C++编程,特别是面向对象编程,这是一份非常有价值的参考资料。
资源详情
资源推荐
(2)说明 2
n
+n
3
是 o(2
n
)。
首先,2
n
+n
3
>2
n
总成立。反之,因为当 n>12 时, n
3
<2
n
总成立,所以 2
n
+n
3
<2*2
n
成立.
所以 2
n
+n
3
是 o(2
n
)。
(3)5(n
2
+6)/(n+3)+7lgn 的 0 值估计是 O(n)。
11
第 2 章 线性表
一、基本概念题
2-1 什么叫线性表?
[解]:
线性表是一种可以在任意位置进行插入和删除数据元素操作、由 n(n≥0)个相同类型数据示素
a
o
,a
l
,a
2
,…,a
n-1
,组成的线性结构.
2-2 什么叫线性结构?线性表是线性结构吗?为什么?
[解]: 线性结构是除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个
后继数据元素。
线性表是一种可以在任意位置进行插入和删除数据元素操作、由 n(n≥0)个相同类型数据示素
a
o
,a
l
,a
2
,…,a
n-1
,组成的线性结构.
2-3 什么叫顺序存储结构?什么叫链式存储结构?
[解]: 顺序存储结构是把数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相邻的数
据元素在物理上也相邻,数据间的逻辑关系表现在数据元素的存储位置关系上。
链式存储结构是使用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)链接起来,
其特点是逻辑上相邻的数据元素在物理上(即内存存储位置上)不一定相邻,数据间的逻辑关系表
现在结点的链接关系上。
2-4 写出线性表的抽象数据类型.
[解]:
线性表的抽象数据类型
数据集合:
线性表的数据集合可以表示为 a
o
,a
l
,a
2
,…,a
n-1
,每个数据元素的数据类型为抽象数据元
素类型 DataType.
操作集合:
(1)初始化 Initiate(L):初始化线性表 Lo
(2)求当前数据元素个数 Size(L):求线性表 L 的当前数据元素个数并由函数返回.
(3)插入数据元素 Insert(L, i,x):在线性表 L 的第 i 个数据元素前插入数据元素 x.
(4)删除数据元素 Delete(L, i):删除线性表 L 的第 i 个数据元素,所删除的数据元素由由函
数返回.
(5)取数据元素 GetData(L, i,x):取线性表 L 的第 i 个数据元素,所取的数据元素由函数返
回.
2-5 什么叫指针?什么叫头指针?什么叫头结点?
[解]: 指针是指向物理存储单元地址的变量. 把指向单链表的指针称为头指针. 头指针所指的不存
放数据元素的第一个结点称做头结点.
12
2-6 画出有 n 个数据元素的带头结点的单链表、循环单链表和循环双向链表结构
[解]:
图 2-5 带头结点的单链表
图 2-15 带头结点的循环单链表
图 2-17 带头结点的循环双向链表
2-7 在链表设计中,为什么通常采用带头结点的链表结构?
[解]: 当选用带头结的单链表时,设头指针用 head 表示,则在第一个数据元素结点前插入结点
时,不会改变头指针 head 的值.同时,删除第一个数据元素结点时,不会改变头指针 head 的
值,改变的是头指针所指结点的指针域的值.
但若选用不带头结点的单链表,在第一个数据元素前插入结点时,头指针 head 的值将改变
为新插入结点的指针.
类似地,删除不带头结点单链表第一个数据元素结点时,头指针 head 的值将改变为等于
head->next,即指针 head 等于原 head->next 的值。
所以采用带头结点的链表结构可以简化链表链表的插入删除等算法。
2-8 说明 C++语言动态申请和动态释放内存空间的 new 运算符和 delete 运算符的功能和使用
方法.
[解]:
在 C++语言中,用 new 运算符进行动态内存的申请,用 delete 运算符进行动态内存的释放.
使用方法如下:
new 运算符的语法格式为:
new 类型名(初始值);
其中,类型名指定了要分配存储空间的类型.
delete 运算符用于释放单个对象内存空间的语法格式为:
delete 指针;
delete 运算符用于释放对象数组内存空间的语法格式为:
delete[]指针;
2-9 在顺序表类中实现插入方法和删除方法时为什么必须移动数据元素?插入方法和删除方法
移动数据元素的方向是否相同?
[解]:顺序存储结构是把数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相邻的数
据元素在物理上也相邻,数据间的逻辑关系表现在数据元素的存储位置关系上。
13
剩余63页未读,继续阅读
omyligaga
- 粉丝: 72
- 资源: 2万+
下载权益
电子书特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功