- #include
- #include
- #include
- int remelement(int* p, int numsize, int val)
- {
- int* tmp = (int*)malloc(sizeof(int) * numsize);
- int i;
- int j = 0;
- if (tmp == NULL)
- {
- return 0;
- }
- else
- {
- for (i = 0; i < numsize; i++)
- {
- if (p[i] != val)
- {
- tmp[j] = p[i];
- j++;
- }
- }
- }
- memcpy(p, tmp, sizeof(int) * j);
- free(tmp);
- return j;
- }
- int main()
- {
- int numsize;
- int i;
- int val;
- scanf_s("%d", &numsize);
- int* p = (int*)malloc(sizeof(int) * numsize);
- if (p == NULL)
- {
- return 0;
- }
- else
- {
- for (i = 0; i < numsize; i++)
- {
- scanf_s("%d", &p[i]);
- }
- }
- scanf_s("%d", &val);
- int newsize = remelement(p, numsize, val);
- for (i = 0; i < newsize; i++)
- {
- printf("%d ", p[i]);
- }
- free(p);
- return 0;
- }
核心就是创建一个临时数组,将不等于val的元素复制到这个临时数组里,然后再放回去原来的数组中。这里需要注意,在遍历打印数组元素的时候,i要小于新的数组大小了,不应该是原来的numsize 。
结果