第16周项目4动态数组扩容

/*。
*Copyright(c)2014,烟台大学计算机学院
*All right reserved,
*文件名:test.cpp
*作者:biyutang
*完成日期:2014年12月13日
*版本号:v1.0
*
问题描述:
*输入描述:输入x
*程序输出:输出Y
*/
#include <iostream>

using namespace std;

int main( )
{
    int num,i,addNum;  //num是小组人数
    cout<<"输入学生人数: ";
    cin>>num;
    int *score = new int[num];
    cout<<"请输入学生成绩: "<<endl;
    //输入num名同学的成绩
    for(i=0; i<num; i++)
    {
        cin>>score[i];//*(score+i)
    }
    cout<<"需要增加多少名学生: ";
    cin>>addNum;//addNum是需要增加的人数
    int *addscore = new int[num+addNum];
    cout<<"成绩为:"<<endl;
    for(i=0; i<num; i++)
    {
        addscore[i]=score[i];
    }
    for(i=num; i<addNum+num; i++)
    {
        cin>>score[i];
    }
    num+=addNum;
    cout<<"现在共有"<<num<<"名同学,他们的成绩是:"<<endl;
    for(i=0; i<num; i++)
    {
        cout<<score[i]<<"  ";
    }
    delete []score;
    return 0;
}

运行结果:


在Python中,我们可以创建一个名为ArrayList的类,它模拟数组的功能并提供基本的操作,如遍历、追加、获取、插入和删除元素。这里是一个简单的实现: ```python class ArrayList: def __init__(self): self.data = [] # 遍历数组 def traverse(self): print("遍历数组:", self.data) # 追加元素到数组末尾 def append(self, item): self.data.append(item) print(f"追加 {item} 到数组") # 获取指定索引处的元素 def get(self, index): if index < len(self.data): return self.data[index] else: print("索引越界,无法获取元素") return None # 插入元素到指定位置 def insert(self, index, item): if index <= len(self.data): self.data.insert(index, item) print(f"{item} 已经成功插入到索引 {index}") else: print("索引超出范围,无法插入") # 删除指定位置的元素 def delete(self, index): if index < len(self.data): del self.data[index] print(f"已从索引 {index} 删除元素") else: print("索引越界,无法删除元素") # 当数组长度超过一定阈值时,自动扩容 def resize(self): old_size = len(self.data) new_size = max(2 * old_size, 16) # 通常将新大小设置为旧大小的两倍或16(防止频繁扩容) self.data.extend([None] * (new_size - old_size)) print("数组扩容") # 使用示例 my_list = ArrayList() my_list.append(1) my_list.traverse() # 遍历初始状态 my_list.insert(0, 0) my_list.get(0) # 获取第一个元素 my_list.delete(1) my_list.resize() # 扩容操作 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值