一个具有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<i;j++)/*注意j从2开始*/ { q=q->next;p=p->next;/*移动指针*/ } q->next=p->next;free(p);/*找到后释放*/ } return; } |
例2
代码如下 | 复制代码 |
/*我写了两种方法!!!方法一*/ #include <stdio.h> /****************************************************************************** #include <stdio.h> |
删除数组中的重复元素
给定一个已定义的数组,该数组中包含有重复的元素!例如给定的数组为: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 <stdio.h> int main() { char str[100]; int i=0,j; printf("input a string n"); gets(str); while(i<strlen(str)) { j=i+1; printf("delelte result %dn",strlen(str)); while(j<strlen(str)) { if(str[j]==str[i]) { str[j]=''; strcat(str,str+j+1) ; } else j++; } i++ ; } } |
二维数组中删除数组中的重复元素
代码如下 | 复制代码 |
简单地统计重复元素和不重复元素,可以用1维数组。 #include<stdio.h> 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<n;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]); } } |
--------------------
“删除数组中的重复元素” 不知道 是什么意思。
数组单元是连续分配单元的。即使是动态分配的单元,也不好从当中删去。