C语言中删除函数的任务,C语言删除函数

用c语言函数删除数组中的数据

既然是数组,表示数据为线性阵列了,想删除其中一个数据,是不可能的,只能用该位置以后的数据整体平移一个位置覆盖当前位置。例如:数组数据 1 2 3 4 5 6 7,想删除3,那么得到的新数组为1 2 4 5 6 7,其中 4 5 6 7 数据的位置相对原始数组位置整体平移减小1。

创新互联是专业的东光网站建设公司,东光接单;提供成都网站建设、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行东光网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

当然想是想快速删除数据,可以考虑使用数据链表,对数组单链即可

写一个删除指定节点的函数(C语言)

用两个指针,p,qp指向该结点的前驱,p指向该结点,然后 p-next=q-next;就删除成功了~~

C语言编程 自定义从字符串中删除指定的字符函数

char* remove_chars(char *str,const char *rmchars)//删除str中所有包含在rmchars中的字符

{

char buff[256]={0};

char *ps1,*ps2;

ps1=(char *)rmchars;

while(*ps1)

buff[*ps1++]=1;//遍历rmchars,将要删除的字符对应在buff中的位置1

ps2=str;

while(*ps2)//遍历str,将要删除的字符置为1

{

if(1==buff[*ps2])

*ps2=1;

ps2++;

}

ps1=str;

ps2=str;

while(0!=*ps1)//调整str中字符位置,删除所有置为1的位

{

if(1!=*ps1)

{

ps1++;

continue;

}

ps2=ps1+1;

while(0!=*ps2 1==*ps2)

ps2++;

if(0==*ps2)

break;

*ps1++=*ps2;

*ps2=1;

}

*ps1=0;

return str;

}

一楼的:

只能删除第一个字符,而且后面的写法是错误的。

二楼的:

没有释放内存,也是只能删除相同的一个字符。

c语言中,有多少具有删除功能的函数或语句?多写几个?比如,deline();

void Insert_list(Sqlist L,int pos,ElemType e)//在POS处插入e

{

int i;

if(pos 1 || pos L.length+1)

printf("The num is out!");

L.elem = (ElemType *)realloc(L.elem,(++L.length)*sizeof(ElemType));

//问题很绕主要就出在length你刚开始就加了1

if(pos == L.length)

L.elem[L.length-1] = e;

else

{

i = L.length - 2;

while(i != pos - 2) {

L.elem[i+1] = L.elem[i];

i--;

}

L.elem[++i] = e;

}

}

如果修改如下,是不是更容易理解:

void Insert_list(Sqlist L,int pos,ElemType e)//在POS处插入e

{

int i;

if(pos 1 || pos L.length+1)

printf("The num is out!");

L.elem = (ElemType *)realloc(L.elem,(L.length + 1)*sizeof(ElemType));

if(pos == L.length + 1) //如果为之前的长度+1

L.elem[L.length] = e; //那么直接插在最后

else

{

i = L.length - 1; //否则从之前的最后一个元素开始遍历,也就是之前的长度-1的位置开始

while(i != pos - 2) { //找到pos-2的位置,其实是找pos-1的位置,即插入位置,但是为了移动元素,必须到pos-2,因为pos-1处的元素也需要向后移动,如果是到pos-1的话,那么pos-1处的元素将丢失

L.elem[i+1] = L.elem[i];

i--;

}

L.elem[++i] = e;//最终在pos-1处插入元素

}

L.length++;//最后再让长度加1

}

这样写似乎比较容易理解,先增加长度会使问题复杂化

测试前提:showList中iL.length而不是L.length+1

测试样例

int main()

{

Sqlist L;

Init_list(L);

Insert_list(L,1,1);

Insert_list(L,1,2);

Insert_list(L,2,3);

Insert_list(L,4,4);

Insert_list(L,3,5);

Show_list(L);

}

测试结果

2 3 5 1 4 ,没有问题

C语言的删除函数

楼主的意思是在str1中删除str2中出现的字符?那么改成:

#includestdio.h

void main ()

{

char str1[9]={'t','i','n','m','f','g','y','f','s'};

char str2[3]={'A','s','g'};

int i,k,l;

for(i=0;i9;i++)

{

l=0;

for(k=0;k3;k++)

{

if (str1[i]=str2[k])

{l=1;break;}

}

if l!=1

printf("%c",str1[i]);

}

}

C语言编写一个函数功能是删除字符串中的字符d

算法很多,告诉你一种比较好想的算法!自己编写,练习一下才有收获!

定义一个数组char a[10],输入一个字符串给它。再定义一个数组char b[10],把数组a中不是字符d和D的字符赋给数组b即可。很简单的!

//@@@@@@@@@@@@@@@@@@@@@@@@@@

//@@@@@@@@@@@@@@@@@@@@@@@@@@

//@@@@@@@@@@@@@@@@@@@@@@@@@@

代码如下(已经编译运行过!)如下:

#include "stdio.h"

void main()

{

char a[10],b[10];

int i=0,j=0;

printf("输入字符串赋给数组a[10] :");

scanf("%s",a);

//把数组A一个个赋给数组B,判断一下,排除字符d和D,字符d和D的ASCII码值分别是100和68

for (i=0; i10; i++)

{

if (100 != a[i] 68 != a[i] ) //排除d和D字符

{

b[j] = a[i]; //把不是d和D的字符赋给数组b

j++;

}

}

printf("删除d和D字符后的字符串为 :%s\n",b);

}

//@@@@@@@@@@@@@@@@@@@@@@@

//@@@@@@@@@@@@@@@@@@@@@@@@

//@@@@@@@@@@@@@@@@@@@@@@@@


网站栏目:C语言中删除函数的任务,C语言删除函数
链接分享:http://pwwzsj.com/article/hcdpie.html