请教:怎么从数组里删除指定的数据

来源:百度知道 编辑:UC知道 时间:2024/05/30 21:07:48
举个例子:有一数组a[]={1,2,3,4,5,5,6,4,5}从这个数组里面删除是5的元素。返回一个没有5的数组。
一种算法:把数组过一遍发现有5的元素,就让后面的数前移.但是如果连续有几个元素是5的话,把后面的元素前移的话.一样去不掉6fgf元素是5的啊.

这是pascal的
for i:=1 to n do
if a[i]=5 then a[i]=maxint;
(过一遍 ,把5元素的标出来,maxint可换为一些特殊的数据)
for i:=2 to n do
if a[i]<>maxint then (本身不是maxint前移)
while a[i-1]=maxint then
begin
a[i-1]:=a[i];
a[i]:=maxint;(连续操作,只要前面的是标出的就前移,
end; 直到前面的不是maxint)
(后面非5的前移)
(下次使用的时候到maxint不操作)
总的说就可以实现了
初学 有些烦 但也可以不前移,操作是若是maxint不操作

for(i=0;i<a.length;i++)
if(a[i]==5) a.pop();