| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6613 人关注过本帖
标题:关于删除数组中某一元素的问题
只看楼主 加入收藏
wangpai7776
Rank: 1
来 自:北京
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-1-6
收藏
 问题点数:0 回复次数:10 
关于删除数组中某一元素的问题
我想请问一下,如果我定义的一个数组是:
int array[5]={1,2,3,4,5};
现在我想删除数组中的“3”这个元素,删除后,后面的前移一位,请问该怎么做???


另外,我这样定义了一个数组
int num=5;
int *number=new int [num];
number[0]=1;
number[1]=2;
number[2]=3;
number[3]=4;
number[4]=5;
我想删除其中的“3”这个元素,并且,删除后,后面的前移一位,请问又该怎么做???

[此贴子已经被作者于2006-3-7 10:19:20编辑过]

搜索更多相关主题的帖子: 元素 删除 定义 array int 
2006-03-06 15:18
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 
你说的删除是什么意思?要补位吗

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-03-06 23:26
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
收藏
得分:0 
array[2] = '\0';

未必钱多乐便多,财多累己招烦恼。 清贫乐道真自在,无牵无挂乐逍遥。
2006-03-07 09:19
guodong661
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-2-15
收藏
得分:0 
第一个问题,什么叫删除,你这个又不是容器类型,怎么能删除呢,最多也就是把你所谓的删除的数赋值为0,你要真的想删除的话,只能说整个数组的空间给回收掉,不能说回收掉其中的一个。
第二个问题和第一个问题是一样的,但是你的数组的定义有点问题,不能用变量来定义数组的长度,必须是常量,可以改为
const int num=5;
int *number=new int[num];
数组引用也有点问题,可写为*(number+3)=1;

2006-03-09 02:51
wangpai7776
Rank: 1
来 自:北京
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-1-6
收藏
得分:0 
以下是引用guodong661在2006-3-9 2:51:00的发言:
第一个问题,什么叫删除,你这个又不是容器类型,怎么能删除呢,最多也就是把你所谓的删除的数赋值为0,你要真的想删除的话,只能说整个数组的空间给回收掉,不能说回收掉其中的一个。
第二个问题和第一个问题是一样的,但是你的数组的定义有点问题,不能用变量来定义数组的长度,必须是常量,可以改为
const int num=5;
int *number=new int[num];
数组引用也有点问题,可写为*(number+3)=1;

不是向你说的这样吧。第一个问题,我同意你的观点。
可是第二个和第三个,我都是在VC6.0下,编译通过的,并且能得出正确结果的。


认真你就输了
2006-03-09 11:24
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
楼主,这个问题还没解决么?

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-03-09 11:30
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
收藏
得分:0 

#include<iostream>
using namespace std;

int main()
{
const int num=10;
int i,delNum;
int *number = new int [num];
int newArr[num-1];

for (i = 0; i < 10; ++i)
number[i] = i + 1;
for (i = 0; i<10; ++i)
cout<<"number["<<i<<"] = "<<number[i]<<endl;

cout<<"Please input delete position"<<endl;
cin >> delNum;
if (delNum < 1 || delNum > 10) {
cerr<<"beyond the mark"<<endl;
exit(1);
}
for (i = delNum; i<10; ++i)
number[i-1] = number[i];
number[9] = '\0';
//-------------
memcpy(newArr,number,sizeof newArr);
//-------------
for (i = 0; i<10; ++i)
cout<<"number["<<i<<"] = "<<number[i]<<endl;
cout<<"//-------------------------\n//-------------------------\n";
for (i = 0; i<9; ++i)
cout<<"newArr["<<i<<"] = "<<newArr[i]<<endl;

return 0;
}


未必钱多乐便多,财多累己招烦恼。 清贫乐道真自在,无牵无挂乐逍遥。
2006-03-09 13:34
wangpai7776
Rank: 1
来 自:北京
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-1-6
收藏
得分:0 

谢谢各位,尤其实柳儿。
这个问题,我已经解决了。
希望与大家共勉

#include <iostream>

using namespace std;

void main()
{
int max = 5;
int* number=new int[max];
int * point = number;
int * del = NULL;
for (int i=0;i<max ;i++ )
{
number[i]=i+1;
}

for (i=0;i<max ;i++ )
{
cout << *point <<endl;
point++;
}
// delete number[2];
cout<< "move 3" <<endl;
int j = 0;
while(number[j]!=3 && j<max)
{
j++;
}
if (number[j]==3)
{
for (i = j ;i <max-1 ; i++)
{
number[i]=number[i+1];
}
number[max-1] =0;
}
//print out
point = number;
for (i=0;i<max;i++)
{
cout << *point <<endl;
point++;
}

delete []number;
number = NULL;
}


认真你就输了
2006-03-09 14:39
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 
呵呵,纳闷一下:柳儿就说了一句话,怎么尤其谢谢她呢?呵呵,难不成因为是唯一的 MM ?

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-03-09 20:30
wangpai7776
Rank: 1
来 自:北京
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-1-6
收藏
得分:0 
尤其要感谢柳儿,不是因为她是唯一的MM,而是因为,以上代码,就是柳儿编写给我看的例子。
最后,我贴出来,希望大家都能从中取得点收获!

[此贴子已经被作者于2006-3-10 9:31:55编辑过]


认真你就输了
2006-03-10 09:31
快速回复:关于删除数组中某一元素的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041946 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved