首先感谢dalao的代码.... 人与人之间的差距真的是有五个脑子....
题目的要求是使用了vector 然后自己写插入和删除
【我】还没解决的:
1.序号问题(收藏了一篇博客准备看了....
2.index是个数值,是你想改变的那个数的序号,但以下代码未验证越界(溢出和负数)
3.HDU的题目里可能会有一些相关的吧... 感觉都是套路 希望熟练 希望一通ok
4.向量还不够,应该还会写几个上来,还有就是链表的....
所以最近是学什么前端呢还是代码能力呢.. 。。我怎么觉得算法更重要,唉及时整理,把小电脑翻新,然后去多刷几道杭电的吧.. 然后我觉得,持之以恒的代码能力和机器人应该比前段重要... 算了,虽然也很诱人还是只是先耳濡目染一下吧,现在好像自己的时间都没有,哦还有就是学会听歌写作业= =
[代码如下,我尽量把注释写的详细一点...]
#include<iostream>
#include<vector>
using namespace std;
void InsertItem(std::vector<int>&v,int item,int index){
// 【差错检验】 (.... 我好像只是少打了一个花括号
//{if(index>v.size()||index<1)
/// cout<<"Error!!"; return ;}
// 其实这一块可以用catch try语句
if(index==v.size())
【如果正好插在最后面的话就是常规操作】
{ v.push_back(item);}
else
【如果不行的话,先定义一个temp去把v存起来,因为向量就像人体蜈蚣那个只能动头和尾,你要给他备份一下。】
{vector <int> temp=v;
v[index]=item;//【赋值操作!赋值操作!!!】
【顺应题目的要求,在index处插入想插入的item】
【把右边item的值赋给左边的向量】
// 不知道++i 会不会出问题
for(int i=index+1;i<=temp.size();i++)// 就是说, 到加一的时候都可以的
v[i]=temp[i-1];
//temp 是用来存储 v 的变量
// v要比temp大一个
// 原来的第i个在 第i-1个里面存着。。
//所以把temp+1 给v
v.push_back(temp[temp.size()-1]);}
// 因为容量改变了,所以最后一个是Pushback进去 的
// 下标 也改了 这就很好
for(int i=0;i<v.size();i++)
{cout<<v[i]<<" ";
}cout<<endl;
}
void RemoveItem(std::vector<int>&v,int index)
{
//没有考虑index是负数,或者超出范围的情况
//HDU
//【popback不能index!!向量的特点】
if(index==v.size())
v.pop_back();
else{
//正常情况下,删除了一个后面的要补上但是就会简单一点》。 吧
vector<int>temp=v;
int bit=0;
for(int i=0;i<v.size();i++)
{
if(i!=index)
// 因为要插入特定的数据,这个思想。就要拆开放到另外一些地方去存着,哦恍恍惚惚哈哈哈、
{v[bit]=temp[i];bit++;
// 好厉害啊 ...这样bit就比temp要小1 了
//index 跳过去没写, 其他数据都是一样的,最后popback了一下。。。
}
} v.pop_back();
/*【画葫芦是不行的。。。popback只能从后面往前走。。】
v.pop_back(index);
for(int i=index;i<=temp.size();i++)// 没写 等号因为没了。直接就
{ v[i]=temp[i+1];}}
// 对第一个而言,v[index]=temp[index-1]
//v index 已经没有了, v是小的 temp 是大的,所以
//temp-1=v 或者 v=temp+1
} */
}
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";cout<<endl;
}
int main(){
vector<int> v;
for(int i=0;i<10;i++)
v.push_back(i);
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";cout<<endl;
InsertItem(v,7,7);
RemoveItem(v,2);
return 0;
}
emmmm... 真的是太丑了
新的版本...
.....括号什么的好像错了, 不管了,以前写的实在是太丑了!!!
czy说我代码缩进实在糟糕, 还真是糟糕的要命啊
//18.8.21
#include<iostream>
#include<vector>
using namespace std;
void InsertItem(std::vector<int>&v,int item,int index){
if(index==v.size()){
v.push_back(item);
}
else{
vector <int> temp=v;
v[index]=item;
for(int i=index+1;i<=temp.size();i++)
v[i]=temp[i-1];
v.push_back(temp[temp.size()-1]);
}
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
cout<<endl;
}
void RemoveItem(std::vector<int>&v,int index) {
if(index==v.size()) v.pop_back();
else{
vector<int>temp=v;
int bit=0;
for(int i=0;i<v.size();i++){
if(i!=index){
v[bit]=temp[i];
bit++;
}
}
v.pop_back();
v.pop_back(index);
for(int i=index;i<=temp.size();i++){
v[i]=temp[i+1];
}
}
}
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";
cout<<endl;
}
int main(){
vector<int> v;
for(int i=0;i<10;i++)
v.push_back(i);
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";
cout<<endl;
InsertItem(v,7,7);
RemoveItem(v,2);
return 0;
}