如何在一个一维数组中插入一个和删除一个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一个一维数组中插入一个和删除一个数相关的知识,希望对你有一定的参考价值。

例如:1,2,3,4
可以任意位置插入一个数或删除任意一个数。
用java实现,写上测试类(main) 不能踢掉最后一个元素,是重建一个比原来长一点的数组,
当删除一个数之后,删除数的后面数往前移,重新组成一个新的数组。

参考技术A 其实每个方法都应该有重载的9个版本,分别用于8个基本类型和类。这里关于基本类型,只写了int的,其他的都一样,只要修改相应的类型就可以了。关于类的对象的数组,这里用了泛型来处理。测试用例为了防止元素和下标都是数字会混淆,因而采用了字符串数组

public class Test
public static void main(String args[])
String[] array = "a", "b", "c", "d";
System.out.println(java.util.Arrays.toString(array));
String[] array2 = ArrayUtilities.insert(array, "e", 2);
System.out.println(java.util.Arrays.toString(array2));
String[] array3 = ArrayUtilities.remove(array2, 3);
System.out.println(java.util.Arrays.toString(array3));



class ArrayUtilities
public static int[] insert(int[] original, int newElement, int pos)
int length = original.length;
int[] dest = new int[length + 1];
System.arraycopy(original, 0, dest, 0, pos);
dest[pos] = newElement;
System.arraycopy(original, pos, dest, pos + 1, length - pos);
return dest;


@SuppressWarnings("unchecked")
public static <T> T[] insert(T[] original, T newElement, int pos)
int length = original.length;
T[] dest = (T[]) java.lang.reflect.Array
.newInstance(newElement.getClass(), length + 1);
System.arraycopy(original, 0, dest, 0, pos);
dest[pos] = newElement;
System.arraycopy(original, pos, dest, pos + 1, length - pos);
return dest;


public static int[] remove(int[] original, int pos)
int length = original.length;
int[] dest = new int[length - 1];
System.arraycopy(original, 0, dest, 0, pos);
System.arraycopy(original, pos + 1, dest, pos, length - pos - 1);
return dest;


@SuppressWarnings("unchecked")
public static <T> T[] remove(T[] original, int pos)
int length = original.length;
T[] dest = (T[]) java.lang.reflect.Array
.newInstance(original.getClass().getComponentType(), length - 1);
System.arraycopy(original, 0, dest, 0, pos);
System.arraycopy(original, pos + 1, dest, pos, length - pos - 1);
return dest;


本回答被提问者采纳

c语言数组排序好输出问题

假设已经有一个排序好的数组,要求输入一个数,判断这个数在该数组中是否存在,如果存在将该数删除后输出,如果没有,将该数插入到该数组中,插入后数组仍是排序好的。然后输出。

参考技术A #include <stdio.h>

#define SIZE 100

int main(void)

int i, j;
int n;
int num;
int flag = 1;
int arr[SIZE] = 1, 5, 11, 13, 22, 35;

n = 6;

printf("请输入一个数:");
scanf("%d", &num);

for (i=0; i<n; i++)

if (num == arr[i])

flag = 0;
for (j=i; j<n-1; j++)

arr[j] = arr[j+1];

n--;
break;



if (1 == flag)

for (i=0; i<n; i++)

if (num < arr[i])

for (j=n-1; j>=i; j--)

arr[j+1] = arr[j];

arr[i] = num;
n++;
break;




printf("输出:\n");
for (i=0; i<n; i++)

printf("%d ", arr[i]);

printf("\n");

return 0;
本回答被提问者采纳
参考技术B gdhfghdfghfghfdghdhfdghhg 参考技术C 楼上正解 参考技术D 楼上的楼上正解

以上是关于如何在一个一维数组中插入一个和删除一个数的主要内容,如果未能解决你的问题,请参考以下文章

C语言一维数组中如何查找指定元素?

C程序:一维数组x中的若干个数已按从小到大的顺序有序;在主函数中输入一个数,调用一个insert函数将其插

有一以排好序的数组(一维,从小到大),现插入一个元素,保持该数组仍然有序

C语言中怎么把一维数组赋给另外一个一维数组

在一维数组中插入一个元素。

php中如何删除二维数组中含有指定元素的所有一维数组?要求如下: