/*线性表操作 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte 总提交 : 3107 测试通过 : 661 描述 线性表是n个元素的有序集合(n30),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。 请在顺序表上实现运算,实现顺序表的逆置,删除表中所有元素值等于x的元素。 输入 三组数据,顺序表元素类型分别为整型、字符型和实型。 每一组第一行给出元素数目n(0<n≤1000),第二行给出元素数值,第三行给出待删除的元素。 输出 三组数据,每一组第一行为逆置后的顺序表元素,第二行是在此基础上删除指定元素后的顺序表元素 样例输入 8 1 2 3 7 5 6 7 8 7 3 a c m h 4 1.2 3.4 5.6 7.8 1.2 样例输出 8 7 6 5 7 3 2 1 8 6 5 3 2 1 m c a m c a 7.8 5.6 3.4 1.2 7.8 5.6 3.4 提示 该题属于南京邮电大学《数据结构A》实验一中的内容,验证的是课本代码,每一个输出元素后均有一个空格(包括最后一个元素),请慎重解答。 题目来源 CHENZ */ #include<stdio.h> #include<string.h> void opp(char a[],int i,int n); void OPP(char a[],char b[],int i,int n,int I); const int N = 5000; int main() { int i=0,n,I=0,P=3; char a[N],b[100],ch; while(P--) { scanf("%d",&n); i=0,I=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); getchar(); while((ch=getchar())!='\n') a[i++]=ch; do if(a[i-1]==' ') a[--i]=0; while(a[i-1]==' '); i--; //printf("%c",*(i+a)); opp(a,i,n); while((ch=getchar())!='\n') b[I++]=ch; OPP(a,b,i,n,I); } return 0; } void opp(char a[],int i,int n) { char*p=a+i; char*temp=p; int j,first=1; while(n--) { //temp=p; for(j=0;;) { j++; if(temp==a||*(--temp)==' ')break; } if(first) { first=0; for(;j>=1;j--) printf("%c",*(p-j+1)); } else for(;j>=0;j--) printf("%c",*(p-j)); p=(--temp); } printf(" "); //printf("*"); printf("\n"); } void OPP(char a[],char b[],int i,int n,int I) { char*p=a+i; char*temp=p; int j,first=1,o=0,J,NP,ok=1; while(n--) { //temp=p; o=0; //printf("%d",b[1]); for(j=0;;) { j++; if(temp==a||*(--temp)==' ')break; } J=j; NP=0; //printf("%d%d!",I,J); while(J--) { if(j!=I||*(p-J)!=b[o++]){NP=1;break;} } //printf("%d!",NP); //printf("%d",NP); if(NP==1) { if(first) { first=0; for(;j>=1;j--) printf("%c",*(p-j+1)); //printf(""); } else if(ok==1) for(;j>=0;j--) printf("%c",*(p-j)); else if(ok==0) { for(;j>=1;j--) printf("%c",*(p-j+1)); // printf("*"); ok=1; } p=(--temp); } else if(NP==0) { if(first) first=0,ok=0; //printf("ok=%d",ok); p=(--temp); } } printf(" "); //printf("*"); printf("\n"); } //WA了,不知道为什么,测了很多很多数据怀疑是NOJ数据有问题。。有输入数据末空格之类的情况,写这么麻烦是,试图用getchar读浮点型,整型,char型,一步到位,练练能力。。的确写了4个小时。 //没救了,noj样例输入第二行多了一个空格。。。 结果注意到了这点我也无法保证其他数据的坑。。。反正还是wa在test 1 了。