输入说明 :
第一行:顺序表A的数据元素的数据类型标记(0:int,1:double,2:char,3:string)
第二行:单链表A的数据元素(数据元素之间以空格分隔)
第三行:待判断对称性的链表长度
输出说明 :
如第一行输入值为0、1、2、3之外的值,直接输出“err”
否则:
第一行:单链表A的遍历结果(数据元素之间以"->"分隔)
空行
第三行:true(对称)
false(不对称)
坑死了,鬼知道,只有一个元素的时候是不对称的啊。。。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
template<class ElemType>
void print(vector<ElemType> a,int len) {
for( int m=0; m<len; ++m) {
cout<<a[m];
if(m!=len-1)
cout<<"->";
else
cout<<endl;
}
}
template<class ElemType>
void Judge_Symmetry( vector<ElemType> &a, int num ) {
bool flag=0;
print(a,a.size());
if(a.size()==1) {
cout<<endl<<"false"<<endl;//只有一个元素的时候是不对称的
return;
}
for(int i=0; i<=num; ++i) {
if(i<=num&&a[i]==a[num-i])
flag=1;
else
flag=0;
}
cout<<endl;
if(flag)
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
int main() {//0:int,1:double,2:char,3:string
int tmy,loc;
string line,elem;
stringstream ss;
cin>>tmy>>loc;
getchar();
if(tmy!=0&&tmy!=1&&tmy!=2&&tmy!=3)
cout<<"err"<<endl;
else {
getline(cin,line);
ss<<line;
vector<string>v;
vector<int>vi;
vector<double>vd;
while(ss>>elem) {
if(tmy==0) {
int i=atoi(elem.c_str());
vi.push_back(i);
}
else if(tmy==1) {
double d=atof(elem.c_str());
vd.push_back(d);
} else
v.push_back(elem);
}
if(tmy==0)
Judge_Symmetry(vi,loc-1);
else if(tmy==1)
Judge_Symmetry(vd,loc-1);
else
Judge_Symmetry(v,loc-1);
return 0;
}
}