1、Power By Rush Chu,数据结构实验报告2015/2016(1)实验题目 miniVector 函数实现与调试 学 生 姓 名 唐超 学生学号 201426810618 学生班级 计自 1401 班 任课教师 刘端阳 提 交 日 期 2015-10-30 Power By Rush Chu,计算机科学与技术学院 实验内容设计并实现完整的 miniVector 类,要求增加插入和删除函数,并测试主要 的成员函数。 设计思路miniVector 类中的其它函数作业之前已经给出,思路详见注释。下面主要讲讲 insert 函数与 Delete 函数的实现思路;1、关于 insert 函数:
2、首先先有一个容量检测的语句,如果实际容量与总容量相等就执行reserve 扩容,接下来实现方法是从后往前循环,直到要插入的位置停止,期间将所有数值都向后移动一位,留出来一个空,然后把需要插入的数放进去,最后把实际容量加 1。代码:void miniVector:insert(int pos, int num)if (vSize = vCapacity)Power By Rush Chu,reserve(2 * vCapacity, true);if (posvSize)cout vSize - 1 - pos; -x)vArrx = vArrx - 1;vArrpos - 1 = num;vS
3、ize+;2、关于 Delete 函数:首先遍历找到要删除元素,然后用一个从要删除的位置循环到最后,把要删除的位置的数用后面的数覆盖掉,最后把实际容量减 1,如果找不到要删除的数则输出“NO Existing”。代码:void miniVector:Delete(int k)bool exist = false;for (int a = 0; a using namespace std;class miniVectorpublic:miniVector(int size = 0); /构造函数miniVector(const miniVector /以对象为形参的构造函数miniVector(
4、); /析构函数Power By Rush Chu,miniVector /重载赋值运算符实现对象与对象之间的赋值int /返回数组最后一个元素的值const int /返回数组最后一个元素的值且为只读int /重载下标运算符const int /重载下标运算符且为只读void push_back(const int /从数组的尾部压入一个值为 item 的元素void pop_back(); /删除数组最后一个元素int size()const; /返回数组元素个数bool empty()const; /清空数组元素int capacity()const; /返回数组容量且为只读void d
5、isplay(ostream /输出数组中的元素void Delete(int k); /删除数组中指定值的元素void insert(int pos, int num); /在指定位置插入指定数值的元素private:int vCapacity; /数组容量int vSize; /数组元素数量int *vArr; /指向动态数组的指针void reserve(int n, bool copy); /调整数组容量,且可以保留数组原数据Power By Rush Chu,;/miniVector.cpp/主要是两个构造函数,一个是输入元素个数的元素默认值为 0 的构造函数,一个则为以对象为形参的
6、构造函数#include “miniVector.h“using 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)cout vSize - 1 - pos; -x)vArrx = vArrx - 1;vArrpos - 1 = num;vSize+;/operator.cpp/重载下标运算符#include “miniVec
7、tor.h“using namespace std;intint main()miniVector a(10); /定义一个 miniVector 对象,容量为 10;cout “对象 a 中的元素: n“;Power By Rush Chu,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); /测试 miniVecto
8、r 以对象为形参的构造函数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“;c.display(cout); /测试=重载函数cout “对象 c 数组最后一个元素的值: “ c.back() endl; Power By Rush Chu,/测试 back 函数cout “如果 c 数组为空则输出 1:n“;cout c.empty() endl;cout “b 数组的元素个数为: “ b.size() endl; /测试 size 函数cout “b 数组的容量为: “ b.capacity() endl; /测试 capacity 函数b15 = a3; /测试下标运算符重载,越界报错cout endl; 测试结果