《数据结构、算法与应用》7.(动态调整数组大小)

最近在读《数据结构、算法与应用》这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢偷笑吐舌头

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值