动态数组的基本应用与实现实验报告(共11页).doc
《动态数组的基本应用与实现实验报告(共11页).doc》由会员分享,可在线阅读,更多相关《动态数组的基本应用与实现实验报告(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上设计动态数组的基本应用与实现1.1需求陈述数组是应用程序中经常要用到的一种数据结构。虽然通过数组可以对大量的数据和对象进行有效的管理,但很多情况下,在程序运行之前,并不能够确切地知道数组中会有多少元素,这时候数组到底声明为多大,就是一个很麻烦的问题。在C+中,动态内存分配技术可以保证程序在运行过程中按照实际需要申请适量的内存,使用结束后还可以释放。这样就使得在运用数组时更加方便,有效。1.2需求分析1.2.1功能分析表1 函数库功能分析项目功能函数Array主体函数主函数:int main()运行函数:Array:run()数组的操作插入元素:Array:insert
2、(const int & index, const int & value)删除元素:Array:remove(const int& index) 追加元素:Array:append(const int& value) 查看数组大小:Array:size()查看数组容量:Array:capacity()查看数组是否为空:Array:empty()类的函数构造函数:Array:Array(const int& capcity) :_size(0), _capacity(capcity)拷贝构造函数:Array:Array(const Array& other) :_size(other._siz
3、e), _capacity(other._capacity)析构函数:Array:Array()1.2.2数据分析数组最初默认为空,并且容量为10。由于使用动态内存分配,所以在存入数据时不必担心数组大小的影响,数组容量不够时可以自动分配新的内存存储数据。对数组进行不同的操作时,数组也会根据实际需要进行动态的内存分配。这样使得数组的应用更加方便、灵活,同时提高了效率。为提高函数的可靠性,我们对每个函数的测试准备了23套测试数据。1.2.3技术约束本函数库的测试系统已在code blocks下编译通过。1.3总体设计1.3.1 数据结构数组所采用的数据结构是类。声明一个数组类,在将对数组进行的各项
4、操作声明为类的函数,通过调用各个函数来实现对数组的各项操作功能。具体定义形式为:class Array int _size;/元素个数 int _capacity;/容量 int* items;/动态数组public: Array(const int& capcity = 16);/构造函数 Array(const Array& other);/拷贝构造函数 Array& operator = (const Array& other);/ Array();/析构函数 void insert(const int& index, const int& value);/插入函数 void remov
5、e(const int& index);/删除函数 void append(const int& value);/追加函数 void run();/运行函数;1.3.2 函数功能a. 主函数(选择界面函数):int main()功能:使用户来选择要对数组进行的操作。关键代码: Array a(10);/声明一个动态数组类的对象 cout*tendl;cout*请选择你想对动态数组的操作*ttendl;cout 1、插入元素 2、追加元素 3、查看数组大小 ttendl;cout 4、查看数组容量 5、删除元素 6、显示元素 ttendl;cout*tendl;cout提示:输入0即可退出程序
6、tendl;cout 目前数组为空,建议追加元素后再进行其他操作ttendl;cout*tendl; a.run();测试数据: 优点:让用户自己选择需要进行的操作,更加人性化。b. 插入元素函数:Array:insert(const int & index, const int & value)设计思想:首先选择要插入元素的位置,位置错误则报错;位置正确则进行下一步判断。如果数组容量可以继续存放数据,则把items + index所指向的内存空间的数据全部拷贝到items + (index + 1)所指向的内存地址上,然后把所要插入的元素赋值给所选择的数组下标位置tmpindex上,这样完成
7、元素插入过程。如果当前数组容量不能继续存放数据,则需要重新申请内存用于存放数据,然后完成元素插入。功能:把新元素插入数组中两元素之间关键代码: if (index = _size )/如果输入下标位置小于零或大于等于元素个数则报错 cout 输入位置不正确!tendl; if (_size _capacity) /如果当前容量可以继续存放元素 memmove(items + (index + 1), items + index, (_size - index) * sizeof(int);/ itemsindex = value;/把要插入的元素存入所选位置 else _capacity *=
8、 2;/容量不够,再开辟同样长度内存空间 int* tmp = new int_capacity; /用指针tmp指向new动态分配的长度为_capacity*sizeof(int)的内存空间 memcpy(tmp, items, index * sizeof(int);/ memcpy(tmp + (index + 1), items + index, (_size - index)* sizeof(int);/ tmpindex = value;/把要插入的元素存入所选位置 delete tmp;/注销指针tmp,使程序释放用new开辟的内存空间 +_size;/插入一个元素所以元素个数加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 数组 基本 应用 实现 实验 报告 11
限制150内