- 实现的功能:
1、创建一个动态数组,可以实现增任意个元素并且打印出来
2、根据相应的索引,找到对应的元素,并打印出来
3、根据索引,删除对应的元素
4、在增加和删除后计算数组长度
#include <iostream>
#include <cstdio>
using namespace std;
class List{
public:
virtual void add(int dat)=0;
virtual int get(int index)=0;
virtual int size()=0;
virtual void display()=0;
virtual int remove (int index)=0;
virtual ~ List(){}
};
class arrayList : public List{
public:
arrayList(){
len=0;
ARRAY_SIZE=10;
dp =new int[ARRAY_SIZE];
}
void add(int dat){
if(len==ARRAY_SIZE){
addspace();
}
*(dp+len)=dat;
len++;
}
int get(int index){
if(index<0 || index>=len){
printf("index invalid!\n");
return 0;
}
return *(dp+index);
}
int size(){
return len;
}
void display(){
printf("\n=======================================\n");
printf("size:%d\n",len);
int i=0;
for(;i<len;i++){
printf("%5d",*(dp+i));
if((i+1)%10==0){
printf("\n");
}
}
printf("\n=======================================\n");
}
int remove(int index){
if(index<0||index>=len){
printf("index out of bonds exception!\n");
return -1;
}
int i=index;
for(;i+1<ARRAY_SIZE;i++){
dp[i]=dp[i+1];
}
len--;
return 0;
}
private:
int len;
int ARRAY_SIZE;
int *dp;
void addspace(){
int *tp=dp;
ARRAY_SIZE *=2;
dp=new int[ARRAY_SIZE];
int i=0;
for(;i<len;i++){
*(dp+i)=*(tp+i);
}
delete []tp;
}
};
int main(){
arrayList list;
int i=1;
for(;i<=200;i++){
list.add(i);
}
list.display();
list.remove(199);
list.display();
printf("\ninput index:\n");
int index;
cin >> index;
printf("the value is:%d\n",list.get(index));
return 0;
}