c语言数组删除指定位置元素(C语言如何从数组中删除一个指定元素)
本文目录
- C语言如何从数组中删除一个指定元素
- c语言中怎么把一个数组清空
- C语言 数组 实现删除一数组中的某指定元素
- c语言一维数组数据删除,删除指定位置的数据
- c语言在一列数组中,删除一个元素
- c语言:如何在一个排序好的数组中删除一个数
- c语言:从数组中删除数据怎么做
- 急!求一个c语言程序,把数组的第I个元素删除
- C语言中怎么删除数组中的一个元素
- 用C语言编写在一个数组中删除指定元素的程序,以下是本人写的一些代码,由于初学,麻烦高手指点修改
C语言如何从数组中删除一个指定元素
在J**A中如何从数组中删除一个元素的程序如下:
package org.usc.action;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String args) {
String str={"张三","李四","王五","宋六","赵七","朱八","何九","田十"};
List《String》 list=Arrays.asList(str);//将数组转换为list集合
if(list.contains("张三"))
{//加入集合中包含这个元素
///这个时候我们直接移除会报错,所以我们要转换为Arraylist
//list.remove("张三");
List《String》 arrayList=new ArrayList《String》(list);//转换为ArrayLsit调用相关的remove方法
arrayList.remove("张三");
for(String str1:arrayList ){
System.out.print(str1+",");}
}}
部分解释:
1、remove这些method时出现java.lang.UnsupportedOperationException异常。
2、这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList, remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
3、ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等, 所以throw UnsupportedOperationException。
扩展资料:
因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集。
Java允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。
异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
c语言中怎么把一个数组清空
1. 在C语言中如何把数组清空
有两种方法可以实现。
为方便说明,定义整型数组a,并实现将a清空。
int a = {1,2,3,4};
1、通过数组遍历,逐个赋值为0。
定义循环变量int i;
for(i = 0; i 《 4; i ++)
a=0;
该程序功能为遍历数组a,逐个将元素赋值为0,实现清空效果。
2、借助内存赋值函数memset,整体赋值为0。
void *memset(void *dst, int value, size_t size);
这个函数的功能为将src上,大小为size字节的数据赋值为value。需要注意的是,该函数赋值是以字节为单位的。
调用该函数时需要引用头文件string.h,即
#include 《string.h》
清空数组的代码为
memset(a,0,sizeof(a));
2. C语言如何从数组中删除一个指定元素
del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数。函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素)。
函数的原型为:
int del (int a,int n,int x)
(1)请实现这个函数,并完成测试。
view plain copy
#include
int del(int a,int n, int x);
int main( )
{
int a= {86,76,62,58,77,85,92,80,96,88,77,67,80,68,78,87,64,59,61,76};
int i, n;
n = del(a, 20, 77);
printf("剩余 %d 个:\n", n);
for(i=0; iprintf("%d ", a);
printf("\n");
return 0;
}
int del(int a,int n, int x) 删除长度为n的a数组中值为x的元素
{
int p=0, q=0; 用p和q两个变量
while (q{
if(a!=x) 只有当元素值不等于x才往p标识的位置上“搬”
{
a;
p++;
}
q++;
} 最后的效果,等于x的元素都没有“搬”过来,它们被“覆盖”了,也即被删除了
return p; p代表的,就是删除后的元素个数
}
(2)如果在函数调用时,要求数组中的元素呈升序排列呢?
思路:例如在下面main函数中的测试,删除77时,分三个阶段:①先找到77;②跨过若干个77后,找到了80;③从80开始,将数据逐个地搬到前面合适的位置(“覆盖”了77及随后的位置)。
view plain copy
#include
int del(int a,int n, int x);
int main( )
{
int a= {58, 59, 61, 62, 64, 67, 68, 76, 77, 77, 77, 80, 80, 85, 86, 87, 88, 88, 92, 96};
int i, n;
n = del(a, 20, 77);
printf("剩余 %d 个:\n", n);
for(i=0; iprintf("%d ", a);
printf("\n");
return 0;
}
int del(int a,int n, int x) 删除长度为n的a数组中值为x的元素
{
int p=0, q;
while (ap++;
q=p; 阶段②:p将标记住这个待删除的位置
while(a==x && qq++;
while(qa; 阶段③:将要保留的元素,直接“覆盖”到p标记住的位置,逐个赋值,结果就是将等于x的元素删除了
return p; p代表的,就是删除后的元素个数
}
3. C语言中怎么删除数组中的一个元素
方法: 删除就是将其下标所在位置的中的内容置为空(也就是0),然后从此位置开始,后面的内容前移,再把最后那个位置的置为空(就是0)。
前移无非就是 类似 arr 这个意思。 当可以确认数组中存放的都是整数,你可以将这个元素置为-1表示删除。
增加就是先检查你的数组中有没有-1的元素,如果有,就设置为你的值。如果全部都满了,就开一个更大的数组,把数据拷贝过去。
把相应位后面的一次前移一位,就是实现了删除操作,可以用个for循环就可以实现了。 数组的内存分配:变量在内存中是从大到小寻址的(内存中以字节为单位),比如00000000 00000000 00000000 00001010在内存中,00001010的地址是最小的;而数组则有些不同,数组的元素自然的从上往下排列 存储,整个数组的地址为首元素的地址。
(但是组成元素的字节还是按从大到小)。 。
4. C语言数组清空的几种方法比较
任何类型的数组都可以,实际上memset函数是对某一个地址以及该地址之后的一串空间进行赋值操作,只要是地址值,都可以被赋值。
1、memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第二个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。
2、函数介绍:void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
5. c语言:如何在一个排序好的数组中删除一个数
办法不至一个,比较直观的是找到要删除的元素后,将它后面的元素依次向前移动(拷贝)一位。举例代码如下:
#include "stdafx.h"If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
int a={1,2,3,4,5,6,7,8,9,10},i,j,x;
printf("Enter a number to delete。\n");
scanf("%d",&x);输入要删除的元素值
for(i=0;i《10;i++)找要删除的元素
if(a==x)
break;找到后跳出循环
if(i《10){
for(j=i+1;j《10;a);找到后后续元素依次向前移动一位
j=9;因为删除了一位,长度变为9
}
else{
printf("Not find %d。\n",x);
j=10;没有找到,长度仍为10
}
for(i=0;i《j;printf("%d ",a));结果输出来看看
printf("\n");
return 0;
}
C语言 数组 实现删除一数组中的某指定元素
#include 《stdio.h》
int main()
{
int a = {1,1,2,6,5,6,3,5,7,3};
int v,i,n;
scanf("%d",&v);
for(i=n=0;i《10;i++)
if(a;
for(i = 0; i《n; i++)
printf("%d ", a);
return 0;
}
c语言一维数组数据删除,删除指定位置的数据
#include 《stdio.h》
main()
{
int i,j,x,a={12,5,4,23,8,18,41,34,15,9};
printf("输入要删除的数:");
scanf("%d",&x);
for(i=0;i《10;++i)
{
if(x==a)
{
for(j=i;j《9;++j) //删除指定的数
a;
a=0;
break;
}
}
if(i==10)
printf("没有找到指定的数");
else
for(i=0;i《9;++i) //输出删除后的数组
printf("%d ",a);
}
c语言在一列数组中,删除一个元素
就是将删除元素后面的元素顺序前移一个位置,覆盖掉被删除的元素的值,然后数组中有效数据个数减一完成删除。
c语言:如何在一个排序好的数组中删除一个数
办法不至一个,比较直观的是找到要删除的元素后,将它后面的元素依次向前移动(拷贝)一位。举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
int a={1,2,3,4,5,6,7,8,9,10},i,j,x;
printf("Enter a number to delete...\n");
scanf("%d",&x);//输入要删除的元素值
for(i=0;i《10;i++)//找要删除的元素
if(a==x)
break;//找到后跳出循环
if(i《10){
for(j=i+1;j《10;a);//找到后后续元素依次向前移动一位
j=9;//因为删除了一位,长度变为9
}
else{
printf("Not find %d...\n",x);
j=10;//没有找到,长度仍为10
}
for(i=0;i《j;printf("%d ",a));//结果输出来看看
printf("\n");
return 0;
}
c语言:从数组中删除数据怎么做
#include《stdio.h》
#define N 10
void main( )
{
int a , num ,i , *p , n=N;
int j;
/*输入N个数到数组a中;*/
for(i=0;i《n;i++)
{
scanf(“%d”,#);
a=num;
}
/*在数组a中删除指定的数num;*/
for(i=0;i《n;i++)
{
if(a == num)
{
//a;//如果不保留原数组里的顺序,此一句即可代替下边2行语句,同时省掉变量j
for(j=i;j《n-1;j++)
a;
n--;
}
}
/*输出删除了num后的数组a;*/
for(i=0;i《n;i++)
printf("%d ",a);
getchar();
}
急!求一个c语言程序,把数组的第I个元素删除
#include 《stdio.h》
int fun( char *a, int n, int i );
void main(void)
{
int i = 0;
char a;
printf("请输入十个字符:");
for ( i=0; i《10; i++ )
{
scanf("%c",&a);
}
printf("请输入要删除的元素位置:");
scanf("%d",&i);
fun(a,10,i);
for ( i=0; i《10; i++ )
{
printf("%c",a);
}
printf("\n");
}
int fun( char *a, int n, int i )
{
int j = i;
if ( j《0 || j》=n )
{
return -1;
}
for ( ; j《n-1; j++ )
{
*(a+j) = *(a+j+1);
}
*(a+j) = ’\0’;
return 0;
}
C语言中怎么删除数组中的一个元素
方法:
删除就是将其下标所在位置的中的内容置为空(也就是0),然后从此位置开始,后面的内容前移,再把最后那个位置的置为空(就是0)。
前移无非就是 类似 arr 这个意思。
当可以确认数组中存放的都是整数,你可以将这个元素置为-1表示删除。增加就是先检查你的数组中有没有-1的元素,如果有,就设置为你的值。如果全部都满了,就开一个更大的数组,把数据拷贝过去。把相应位后面的一次前移一位,就是实现了删除操作,可以用个for循环就可以实现了。
数组的内存分配:变量在内存中是从大到小寻址的(内存中以字节为单位),比如00000000 00000000 00000000 00001010在内存中,00001010的地址是最小的;而数组则有些不同,数组的元素自然的从上往下排列 存储,整个数组的地址为首元素的地址。 (但是组成元素的字节还是按从大到小)。
用C语言编写在一个数组中删除指定元素的程序,以下是本人写的一些代码,由于初学,麻烦高手指点修改
#include 《stdio.h》
#define ARR_SIZE 5
int Delete(int *a, int n, int x);
void main()
{
int a, x, i, n;
printf("Please enter array numbers:\n");
scanf("%d", &n);
printf("Please enter array:\n");
for (i=0; i《n; i++)
{
scanf("%d", &a);
}
printf("Please enter a number what you want to delet:\n");
scanf("%d", &x);
if( Delete(a, n, x) == -1 )
printf("can not find the number!\n") ;
else
{
printf("After delet %d:\n", x);
for(i=0; i 《 n - 1; i++)
{
printf("%d ", a); // 不要加地址符,我还以为我编译器坏了,囧
}
}
}
int Delete(int *a, int n, int x)
{
int *p=NULL, *pos=NULL;
for (p=a; p《a+n; p++)
{
if (*p == x)
break;
}
if( p 》= a + n )
return -1 ;
for( ; p 《 a + n - 1 ; ++p ) //循环反了,后边的数据会把前边的覆盖
{
*p=*(p+1);
}
return 0 ;
}