线性表操作
时间限制(普通/Java):1000MS/3000MS
运行内存限制:65536KByte
总提交:2795
测试通过:589
描述
线性表是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<iostream>
using namespace std;
template<class T>
class SeqList
{
private:
T * elements;
int maxLength;
int n;
public:
SeqList(int nSize)
{
maxLength=nSize;
elements=new T[maxLength];
n=0;
}
void Insert(T x)
{
if(n>=maxLength)
cout<<"out of bounds"<<endl;
elements[n]=x;
n++;
}
void Delete(T x)
{
for(int i=0;i<n;i++)
{
if(elements[i]==x)
{
for(int j=i;j<n;j++)
elements[j]=elements[j+1];
n--;
i--;
}
}
}
void outPut()
{
for(int i=n-1;i>=0;i--)
{
cout<<elements[i]<<" ";
}
cout<<endl;
}
};
int main()
{
int n;
cin>>n;
SeqList<int> list(n);
int x;
for(int i=0;i<n;i++)
{
cin>>x;
list.Insert(x);
}
cin>>x;int size;
cin>>size;
SeqList<char> clist(size);
char ch;
for(int k=0;k<size;k++)
{cin>>ch;
clist.Insert(ch);
}
cin>>ch;int size2;
cin>>size2;
SeqList<float> flist(size2);
float value;
for(int m=0;m<size2;m++)
{
cin>>value;
flist.Insert(value);
}
cin>>value;list.outPut();
list.Delete(x);
list.outPut();
clist.outPut();
clist.Delete(ch);
clist.outPut();
flist.outPut();
flist.Delete(value);
flist.outPut();
return 0;
}
题目链接http://202.119.236.66:9080/acmhome/problemdetail.do?&method=showdetail&id=1004