数组与链表
文章目录
1.数组
1.1实现一个支持动态扩容的数组
- [思想]:所谓动态数组,就是可以根据需要,可以动态的增长数组的空间大小。我的思路很简单,就是增加一个新的数组,将原数组中的数据复制到新的数组中,再增加新的数据,同时删除原来旧的数组,释放空间。
代码实现:语言C++
#include<iostream>
// 实现一个支持动态扩容的数组
using namespace std;
int main()
{
int num,i,addNum;
cout<<"输入初始数组长度:";
cin>>num;
int *array=new int[num];
cout<<"输入数组内容(数字):";
//输入num个数字
for(i=0;i<num;i++)
cin>>array[i];
cout<<"输入需要增加的数组长度为:";
cin>>addNum;
//下面对数组进行扩容,并输入拓展的数组内容
int *addArray=new int[num+addNum];
//将原数组中的数据复制到新数组
for(i=0;i<num;i++)
addArray[i]=array[i];
cout<<"请输入增加的数组内容(数字):";
for(i=0;i<addNum;i++)
cin>>addArray[num+i];
//释放不用的空间
delete []array;
array=addArray;
num=num+addNum;
cout<<"拓展后数组中的长度为"<<num<<endl;
cout<<"内容为:"<<endl;
for(i=0;i<num;i++)
cout<<array[i]<<" ";
cout<<endl;
delete []array;
return 0;
}
1.2实现一个大小固定的有序数组,支持动态增删改操作
#include<iostream>
using namespace std;
const int initialLen = 10; //设数组初始长度为10
template <class T>
class Array{
public:
Array(int len=initialLen){
T *p=new T[len];
_data=p;
_capacity=len;
_size=0;
}
//打印
void print(){
cout << "Array: ";
cout << "Capacity = " << _capacity << ", " << "Size = " << _size << endl;
cout << '[';
for (int i = 0; i < _size; ++i){
cout << _data[i];
if (i != _size - 1){
cout << ',';
}
}
cout << ']' << endl;
}
//扩容
void resize(int len){
T *p=new T[len];
for(int i=0;i<_size;i++){
p[i]=_data[i];
}
delete []_data;
_data=p;
_capacity=len;
}
//增删改
void add(int index,T num);
T remove(int index);