删除数组中特定的元素或者某一范围的元素
//删除顺序表中某范围的数
//删除顺序表中某范围的数 #include<iostream> #include<math.h> #include<string.h> using namespace std; typedef struct { int a[100]; int length; } Seqlist; int main() { bool del_s_t(Seqlist&L,int s,int t); Seqlist l; int i; for( i=0; i<10; i++) { l.a[i]=i+1; } l.length=i; del_s_t(l,3,7); for( i=0; i<l.length; i++) { printf("%d ",l.a[i]); } printf("\n"); cout<<l.length<<endl; return 0; } bool del_s_t(Seqlist&L,int s,int t) { int i,k=0; if(L.length==0||s>=t) { return false; } for(i=0; i<L.length; i++) { if(L.a[i]>=s&&L.a[i]<=t) k++; else L.a[i-k]=L.a[i]; } L.length-=k; return true; }
/*删除有序数组中某一段长度
//获取一个数组的长度用 sizeof(a)/sizeof(a[1]);
*/
/*删除有序数组中某一段长度 //获取一个数组的长度用 sizeof(a)/sizeof(a[1]); */ #include<iostream> #include<math.h> #include<string.h> using namespace std; int main() { int a[]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int len =sizeof(a)/sizeof(a[1]); int begin; int end; begin=3; end =7; int i; int j; for(i=0; i<len&&a[i]<begin; i++); //寻找>=begin的第一个元素 for(j=i; j<len&&a[j]<=end; j++); //寻找大于end的第一个匀速 for(; j<len; i++,j++) a[i]=a[j]; int len1 =i; for(i=0; i<len1; i++) printf("%d ",a[i]); printf("\n"); return 0; }