




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验报告 2015/2016(1) 实验题目 miniVector函数实现与调试 学生姓名唐超 学生学号201426810618 学生班级计自1401班 任课教师刘端阳 提交日期2015-10-30 计算机科学与技术学院l 实验内容 设计并实现完整的miniVector类,要求增加插入和删除函数,并测试主要 的成员函数。l 设计思路miniVector类中的其它函数作业之前已经给出,思路详见注释。下面主要讲讲insert函数与Delete函数的实现思路;1、关于insert函数: 首先先有一个容量检测的语句,如果实际容量与总容量相等就执行reserve扩容,接下来实现方法是从后往前循环,直到要插入的位置停止,期间将所有数值都向后移动一位,留出来一个空,然后把需要插入的数放进去,最后把实际容量加1。代码: void miniVector:insert(int pos, int num)if (vSize = vCapacity)reserve(2 * vCapacity, true);if (posvSize)cout vSize - 1 - pos; -x)vArrx = vArrx - 1;vArrpos - 1 = num;vSize+;2、 关于Delete函数:首先遍历找到要删除元素,然后用一个从要删除的位置循环到最后,把要删除的位置的数用后面的数覆盖掉,最后把实际容量减1,如果找不到要删除的数则输出“NO Existing”。代码: void miniVector:Delete(int k)bool exist = false;for (int a = 0; a vSize;+a)if (vArra = k) exist = true; int flag = a; for (int y = flag; y vSize; y+) vArry = vArry + 1; vSize-;if (!exist) cout NO Existingn; l 程序代码/miniVector.h#include using namespace std;class miniVectorpublic:miniVector(int size = 0); /构造函数miniVector(const miniVector&obj); /以对象为形参的构造函数miniVector(); /析构函数miniVector&operator =(const miniVector&rhs); /重载赋值运算符实现对象与对象之间的赋值int &back(); /返回数组最后一个元素的值const int&back() const; /返回数组最后一个元素的值且为只读int & operator (int i); /重载下标运算符const int& operator (int i)const; /重载下标运算符且为只读void push_back(const int&item); /从数组的尾部压入一个值为item的元素void pop_back(); /删除数组最后一个元素int size()const; /返回数组元素个数bool empty()const; /清空数组元素int capacity()const; /返回数组容量且为只读void display(ostream&out); /输出数组中的元素void Delete(int k); /删除数组中指定值的元素void insert(int pos, int num); /在指定位置插入指定数值的元素private:int vCapacity; /数组容量int vSize; /数组元素数量int *vArr; /指向动态数组的指针void reserve(int n, bool copy); /调整数组容量,且可以保留数组原数据;/miniVector.cpp/主要是两个构造函数,一个是输入元素个数的元素默认值为0的构造函数, 一个则为以对象为形参的构造函数#include miniVector.husing namespace std;miniVector:miniVector(int size):vSize(0), vCapacity(0), vArr(NULL)int i;if (size = 0) return;reserve(size, false);vSize = size;for (i = 0; i vSize; +i)vArri = 0;miniVector:miniVector(const miniVector&obj):vSize(0), vCapacity(0), vArr(NULL)int i;if (obj.vSize = 0) return;reserve(obj.vSize, false);vSize = obj.vSize;for (i = 0; i vSize; +i)vArri = obj.vArri;/miniVector.cpp/析构函数#include miniVector.husing namespace std;miniVector:miniVector()if (vArr != NULL)deletevArr;/back.cpp/返回最后一个元素的值#include miniVector.husing namespace std;int& miniVector:back()if (vSize = 0)cout miniVector back():vector emptyn;return vArrvSize - 1;const int& miniVector:back() constif (vSize = 0)cout miniVector back():vector emptyn;return vArrvSize - 1;/capacity.cpp/返回数组的总容量#include miniVector.husing namespace std;int miniVector:capacity()constreturn vCapacity;/delete.cpp/删除指定数值的元素void miniVector:Delete(int k)bool exist = false;for (int a = 0; a vSize;+a)if (vArra = k) exist = true; int flag = a; for (int y = flag; y vSize; y+) vArry = vArry + 1; vSize-;if (!exist) cout NO Existingn;/display.cpp/输出数组中的所有元素#include miniVector.husing namespace std;void miniVector:display(ostream& out)for (int i = 0; i vSize; +i)out vArri ;out endl;ostream& operator (ostream & out, miniVector &vec)vec.display(out);return out;/empty.cpp/判断数组是否为空#include miniVector.husing namespace std;bool miniVector:empty()constreturn vSize = 0;/insert.cpp/在特定位置插入特定元素void miniVector:insert(int pos, int num)if (vSize = vCapacity)reserve(2 * vCapacity, true);if (posvSize)cout vSize - 1 - pos; -x)vArrx = vArrx - 1;vArrpos - 1 = num;vSize+;/operator.cpp/重载下标运算符#include miniVector.husing namespace std;int& miniVector:operator(int i)if (ivSize)cerr vSize)cerr ;exit(1);for (int i = 0; i rhs.vSize; +i)vArri = rhs.vArri;vSize = rhs.vSize;return miniVector(vSize);/pop_back.cpp/删除最后一个元素#include miniVector.husing namespace std;void miniVector:pop_back()if (vSize = 0)cout miniVector pop_back(): vector is emptyn;vSize-;/push_back.cpp/在末尾添加一个元素#include miniVector.husing namespace std;void miniVector:push_back(const int&item)if (vSize = vCapacity)if (vCapacity = 0)reserve(1, false);else reserve(2 * vCapacity, true);vArrvSize = item;vSize+;/reserve.cpp/调整数组容量#include miniVector.husing namespace std;void miniVector:reserve(int n, bool copy)int *newArr;int i;newArr = new intn;if (newArr = NULL)cout miniVector reserve(): memory allocation failuren;if (copy)for (i = 0; i vSize; i+)newArri = vArri;if (vArr != NULL) deletevArr;vArr = newArr;vCapacity = n;/size.cpp/返回数组实际元素个数#include miniVector.husing namespace std;int miniVector:size()constreturn vSize;/main.cpp#include miniVector.h#include using namespace std;int main()miniVector a(10); /定义一个miniVector对象,容量为10;cout 对象a中的元素:n;a.display(cout); /输出a中的所以元素a.push_back(6); cout push_back函数作用后对象a中的元素:n;a.display(cout); / 测试push_back函数miniVector b(a);cout 对象b中的元素:n;b.display(cout); /测试miniVector以对象为形参的构造函数b.Delete(6); cout delete函数作用后对象b中的元素:n;b.display(cout); /测试delete函数b.insert(3, 78); cout insert函数作用后对象b中的元素:n;b.display(cout); /测试insert函数b.pop_back();cout pop_back函数作用后对象b中的元素:n;b.display(cout); /测试pop_back函数miniVector c = b; cout 对象c复制了对象b后b中的元素:n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高速公路智能交通系统与智能交通信息服务技术研究报告
- 《除数是一位数的除法 - 笔算除法》(教学设计)-2023-2024学年三年级下册数学人教版
- 心理专业测试题目及答案
- 编导专业面试题目及答案
- 教育行业2025年质量评估与认证体系构建与教育信息化融合报告
- 2025年宠物检验常识题库及答案
- 出租车考试题及答案解析
- 2025年地热能发电技术设备制造与产业链协同发展报告
- 第二单元《生物和栖息地》第二单元《生物和栖息地》(教案)-2023-2024学年六年级科学下册苏教版
- 成都小升初历年考试题及答案
- 课题申报讲座课件
- 纸张消耗统计表
- Q∕SY 06327-2020 二氧化碳驱油气田集输管道施工技术规范
- 译林版六年级英语上册 Unit 3 第2课时 教学课件PPT小学公开课
- 肩袖损伤护理
- 中国电影的发展史
- 电镀时间与理论厚的计算方法
- Word操作练习题
- 电力建设土建工程施工试验及验收标准表式施工
- 药用高分子材料学(78)
- 再生资源回收利用基地项目资金申请报告写作模板+
评论
0/150
提交评论