c语言数组删除小写字母,C语言删除数组元素一些方法总结

本文章来给大家介绍C语言删除数组元素方法,这里包括一重复数组,单数组,二维数组元素的删除实例,各位有需要了解的同学可进入参考。

一个具有10个元素的数组 1 3 3 2 5 1 1 5 6 6,删除相同元素后后变为 1 3 2 5 6,请大虾们帮下忙,最好给出全部程序,必须是删除法!

 代码如下复制代码

void delete_listi(Node list,int i)

{

Node p=list;q;

int j;/*设辅助循环变量*/

if(i==1)

list=list->next;

else

{

q=p;p=p->next;

for(j=2;j

{

q=q->next;p=p->next;/*移动指针*/

}

q->next=p->next;free(p);/*找到后释放*/

}

return;

}

例2

 代码如下复制代码

/*我写了两种方法!!!方法一*/

#include

int main()

{

int a[10]={1,3,3,2,5,1,1,5,6,6};

int i,j,k,x=10;/*x为数组中无重复有效元素的个数*/

for(i=0;i

{

for(j=i 1;j

{

if(a[i]==a[j])

{

x--;//发现重复时减1

for(k=j;k

{

a[k]=a[k 1];

}

j--;

}

}

}

for(i=0;i

printf("n");

return 0;

}

/******************************************************************************

* 再写一种方法!!!

*此方法是把所有重复的都标识出来,然后生成一个新的无重复元素的数组

*******************************************************************************/

#include

#define flag -1//此外定义了一个标识。把重复的无素赋值为此标识。

int main()

{

int a[10]={1,3,3,2,5,1,1,5,6,6};

int b[10];//用于存储有无重复元素的数组。

int i,j,x=10;//x为无重复有效元素个数

for(i=0;i<10;i )

{

if(a[i]!=flag)//如果标识过了,就不比较了

{

for(j=i 1;j<10;j )

{

if(a[i]==a[j]&&a[j]!=flag)

{

a[j]=flag;

x--;//标识一个重复项,有效无素减少一个

}

}

}

};

for(i=0,j=0;i<10;i )//把非标识的元素,给数组b[];

{

if(a[i]!=flag)

{

b[j]=a[i];

j ;

}

};

for(i=0;i

printf("n");

return 0;

}

删除数组中的重复元素

给定一个已定义的数组,该数组中包含有重复的元素!例如给定的数组为:int a[]={1,2,3,4,5,3,2,1,5};而目的是将该数组处理后留下的结果为:a[]={1,2,3,4,5}; 而不需要再定义int b[50],通过"b[j]=a[i];"把a数组的元素转移到b数组中去!

 代码如下复制代码

#include

int main()

{

char str[100];

int i=0,j;

printf("input a string n");

gets(str);

while(i

{ j=i 1;

printf("delelte result %dn",strlen(str));

while(j

{ if(str[j]==str[i])

{

str[j]=' ';

strcat(str,str j 1) ;

}

else j ;

}

i ;

}

puts(str);

}

二维数组中删除数组中的重复元素

 代码如下复制代码
简单地统计重复元素和不重复元素,可以用1维数组。

#include

void main()

{

int i,j,k;

int a[50];

int b[50],c[50];

int n,flag=0;

for (i=1;i<50;i ) c[i]=0;

printf("Please enter 50 datan");

for (i=0;i<50;i ) scanf("%d",&a[i]);

n=0;

b[n]=a[0]; c[n]=1; n ;

for (i=1;i<50;i ){

for (k=0;k

if  (a[i] == b[k])  {c[k]=c[k] 1; flag=1;break;}

}

if (flag == 0) {b[n] =a[i];c[n]=1;n ;} else {flag = 0;};

}

for (i=0;i<50;i ){

if  (c[i]==1) printf("%d ",b[i]);

}

printf("n=============n");

for (i=0;i<50;i ){

if  (c[i]>1) printf("%d -- %dn",b[i],c[i]);

}

}

--------------------

“删除数组中的重复元素” 不知道 是什么意思。

数组单元是连续分配单元的。即使是动态分配的单元,也不好从当中删去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值