线性表操作

来源:互联网 发布:everything软件ftp 编辑:程序博客网 时间:2024/05/17 05:03

线性表操作http://acm.njupt.edu.cn/acmhome/problemdetail.do?method=showdetail&id=1004

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:2881            测试通过:605

描述

线性表是n个元素的有序集合(n³0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。

请在顺序表上实现运算,实现顺序表的逆置,删除表中所有元素值等于x的元素。

输入

三组数据,顺序表元素类型分别为整型、字符型和实型。

每一组第一行给出元素数目n0<n1000),第二行给出元素数值,第三行给出待删除的元素。

输出

三组数据,每一组第一行为逆置后的顺序表元素,第二行是在此基础上删除指定元素后的顺序表元素

样例输入

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 

代码(未提交):

//http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1004#include<stdio.h>#include<malloc.h>#include<math.h>int main(){int n,m,r,x,y,i;scanf("%d",&n);int *p;p=(int *)malloc(n*sizeof(int));for(i=0;i<n;++i)scanf("%d",&p[i]);scanf("%d",&x);scanf("%d",&m);getchar();char *u;    u=(char *)malloc(m*sizeof(char));for(i=0;i<m;++i)scanf("%c ",&u[i]);scanf("%c ",&y);scanf("%d",&r);double*v;    v=(double*)malloc(r*sizeof(double));for(i=0;i<r;++i)scanf("%lf",&v[i]);double z;scanf("%lf",&z);for(i=n-1;i>=0;--i)printf("%d ",p[i]);printf("\n");for(i=n-1;i>=0;--i){if(p[i]!=x)printf("%d ",p[i]);}free(p);printf("\n");for(i=m-1;i>=0;--i)printf("%c ",u[i]);printf("\n");for(i=m-1;i>=0;--i){if(u[i]!=y)printf("%c ",u[i]);}free(u);printf("\n");for(i=r-1;i>=0;--i)printf("%.1lf ",v[i]);printf("\n");for(i=r-1;i>=0;--i){if(fabs(v[i]-z)>1e-7)printf("%.1lf ",v[i]);                  }free(v);printf("\n");//while(1);return 0;}

0 0
原创粉丝点击