当前位置: 首页 > news >正文

ArrayList 类

【问题描述】
根据提示,指定区域内补充代码。实现一个能够支持动态数组的类ArrayList,  ArrayList类一共包含 3 个数据成员。

int *Data; 
int Size;
int Capacity;
其中 Data 指向数据真正保存的地方。Size表示当前保存的数据个数。Capacity 表示当前能保存的最大个数即容量。

ArrayList 类是一个比较复杂的类,本任务先完成第一步,实现其构造函数。 
要求为 ArrayList 类提供如下构造函数和成员函数。分别是:

原生输出构造函数: 给定一个 C++ 的原生数组,构造出内容一样的Array对象;
Size 和 Capacity都设置成原生数组的长度。如果原生数组为长度为0,可以按 Size=0,Capacity=1的情况进行ArrayList 对象初始化。

append函数 :给定参数value,在数组尾部再添加一个值。如果此时容量不够,将原来的容量翻倍。

print函数:  打印出当前的数组的size,Capacity ,data的内容,具体可以参考输入输出样例。

【样例输入】
5
1 2 3 4 5
6
【样例输出】
ArrayList{size:5,capacity:5,data[1,2,3,4,5]}
NativeArray{size:5,data[2,3,4,5,6]}
ArrayList{size:8,capacity:10,data[1,2,3,4,5,6,7,8]}
【样例说明】
输入的第一行是一个整数n, 表示原生数组的长度是n 输入的第二行是原生数组的n个元素。 
输入的第三行是一个整数t,用于追加到ArryList尾部。
 

#include <iostream>
using namespace std;class ArrayList {
private:int *Data; int Size;int Capacity;
public:/*ArrayList(){Size=0,Capacity=1;Data=NULL;}ArrayList(int *A,int n){Size=n;Capacity=n;Data=new int [Capacity];//注意别忘了 for(int i=0;i<n;i++){Data[i]=A[i];}}*/// 原生数组构造函数ArrayList(int* arr, int n) {if (n == 0) {Size = 0;Capacity = 1;Data = new int[Capacity];} else {Size = n;Capacity = n;Data = new int[Capacity];for (int i = 0; i < n; i++) {Data[i] = arr[i];}}}~ArrayList(){delete[] Data;Data=NULL;}void append(int l){if(Size==Capacity){int newCapacity=2*Capacity;int *newData=new int[newCapacity];for(int i=0;i<Size;i++){newData[i]=Data[i];}delete []Data;Data=newData;Capacity=newCapacity;//注意别忘了//delete []newData; 不要释放newData!!!!!!!!!!!!!!! }Data[Size++]=l;//Size+=1;}void print() {cout << "ArrayList{size:" << Size << ",capacity:" << Capacity << ",data[";for (int i = 0; i < Size; i++) {if (i != 0) cout << ",";cout << Data[i];}cout << "]}" << endl;}
};int main() {int n;int* A;int t;cin>>n;A = new int[n];for(int i=0; i<n; i++) {cin>>A[i];}cin>>t;ArrayList a(A,n);a.print();a.append(t);a.append(t+1);a.append(t+2);cout<<"NativeArray{size:"<<n<<",data[";for(int i=0; i<n;i++){if(i!=0){ cout<<",";}cout << ++A[i];}cout<<"]}"<< endl;a.print();return 0;
}

【问题描述】

最后加一个数组

#include <iostream>
using namespace std;class ArrayList {
private:int *Data; int Size;int Capacity;
public:ArrayList(){Size=0;Capacity=0;Data=new int [Capacity];}ArrayList(int n,int value){Size=n;Capacity=n;Data=new int [Capacity];for(int i=0;i<Size;i++){Data[i]=value;}}~ArrayList(){delete [] Data;Data=NULL;}ArrayList (const ArrayList&a){Size=a.Size;Capacity=a.Capacity;Data=new int [Capacity];for(int i=0;i<Size;i++){Data[i]=a.Data[i];}}void append(int *arry,int l){if(Size+l>Capacity){Capacity*=2;} //当需要扩容时,新容量至少是原来的两倍,或者当前所需的大小,//取较大的那个,这样既保证足够空间,又减少扩容次数。int *arr=new int [Capacity];for(int i=0;i<Size;++i){arr[i]=Data[i];}delete [] Data;Data=arr;for(int i=0;i<l;++i){Data[Size++]=arry[i];}}void doubleData(){for(int i=0;i<Size;i++){Data[i]*=2;}}void print(){cout<<"ArrayList{size:"<<Size<<",capacity:"<<Capacity<<",data[";for(int i=0;i<Size;i++){cout<<Data[i];if(i==Size-1){cout<<"]}";}else{cout<<",";}}cout<<endl;}};int main() {int n;int* A;int t;cin>>n;A = new int[n];for(int i=0; i<n; i++) {cin>>A[i];}cin>>t;ArrayList a(n,t);ArrayList b(a);b.append(A,n);b.doubleData();a.print();b.print();return 0;
}

http://www.lqws.cn/news/94213.html

相关文章:

  • Vue混入
  • Nginx 的配置文件
  • OpenCV 滑动条调整图像亮度
  • [yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码
  • 谷歌地图苹果版v6.138.2 - 前端工具导航
  • DrissionPage 性能优化实战指南:让网页自动化效率飞升
  • MySQL 8 完整安装指南(Ubuntu 22.04)
  • 【R语言编程绘图-mlbench】
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第9章三水平和混合水平析因设计与分式析因设计9.5节思考题9.1 R语言解题
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题
  • R语言使用随机过采样(Random Oversampling)平衡数据集
  • RagFlow优化代码解析
  • 【Ragflow】25.Ragflow-plus开发日志:excel文件解析新思路/公式解析适配
  • Ubuntu 挂载新盘
  • 《对象创建的秘密:Java 内存布局、逃逸分析与 TLAB 优化详解》
  • TDengine 高级功能——流计算
  • mac环境下的python、pycharm和pip安装使用
  • JavaScript 数据处理 - 数值转不同进制的字符串(数值转十进制字符串、数值转二进制字符串、数值转八进制字符串、数值转十六进制字符串)
  • ForkJoinTask深度解析:Java并行计算利器
  • 前端限流如何实现,如何防止服务器过载
  • SpringCloud 分布式锁Redisson锁的重入性 高并发 获取锁
  • WAF绕过,网络层面后门分析,Windows/linux/数据库提权实验
  • Day11
  • 【Spring AI】调用 DeepSeek 实现问答聊天
  • 使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题
  • 4-C#的不同窗口传值
  • Linux下使用nmcli连接网络
  • 【Pytorch学习笔记】模型模块08——AlexNet模型详解
  • VR 虚拟仿真工器具:开启医学新视界的智慧钥匙​
  • LeetCode hot100-11