/*线性表操作
时间限制(普通/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 了。
NOJ1004线性表操作
最新推荐文章于 2022-10-24 16:55:52 发布