最近在读《数据结构、算法与应用》这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢
7. 假定用一维数组a[0 : size-1]来存储一组元素。如果有n个元素,可以把它们存储在a[0],..., a[n-1]中。当n超过si ze时, 数组将不足以存储所有元素 , 必须分配一个更大的数组。类似地,如果元素的数目比size小很多,我们又可能希望 减少数组的大小, 以便释放出多余的空间为其他地方所用。试编写一个模板函数ChangeSize1D把数组a的大小从size变成 ToSize。函数首先应该分配一个新的、大小为ToSize的数组,然后把原数组a中的n个元素复制到新数组a中,最后释放原数组 a所占用的空间。上机测试该函数。
//
// main.cpp
// Test_07
//
// Created by cc on 14-4-13.
// Copyright (c) 2014年 cc. All rights reserved.
//
/*
7. 假定用一维数组a[0 : size-1]来存储一组元素。如果有n个元素,可以把它们存储在a[0],..., a[n-1]中。当n超过si ze时, 数组将不足以存储所有元素 , 必须分配一个更大的数组。类似地,如果元素的数目比size小很多,我们又可能希望 减少数组的大小, 以便释放出多余的空间为其他地方所用。试编写一个模板函数ChangeSize1D把数组a的大小从size变成 ToSize。函数首先应该分配一个新的、大小为ToSize的数组,然后把原数组a中的n个元素复制到新数组a中,最后释放原数组 a所占用的空间。上机测试该函数。
*/
#include <iostream>
using namespace std;
template <typename T>
void changeArraySize(T* &array, int size, int toSize);
int main(int argc, const char * argv[]) {
int n = 10;
int* array = new int[n];
//填充数据
for (int i = 0; i < 10; i++) {
array[i] = i + 1;
}
//改变数组大小
changeArraySize(array, 10, 20);
//修改数据
for (int i = 0 ; i < 20 ; i++) {
array[i] = i + 1;
}
//打印观察是否改变成功
for (int i = 0; i < 20; i++) {
cout << "array[" << i << "]" << array[i] << endl;
}
return 0;
}
template <typename T>
void changeArraySize(T* &array, int size, int toSize) {
T* tempArray = new T[toSize];
for (int i = 0; i < size; i++) {
tempArray[i] = array[i];
}
delete[] array;
array = tempArray;
}
输出结果如下图:
本文由CC原创总结,如需转载请注明出处:http://blog.csdn.net/oktears/article/details/23620339