#include<iostream>
using namespace std;
template <class T, int N>
class SeqList {
public:
int Locate(T);
T Delete(int i);
void Insert(int i, T x);
void PrintList();
void Operation(char ch);
private:
T data[N];
int length = 0;
};
template <class T, int N>
void SeqList<T, N>::Insert(int i, T x)
{
if ((i < 1) || (i > length + 1)) throw "插入位置异常";
if (length >= N) throw"上溢";
int j;
for (j = length; j >= i; j--)
{
data[j] = data[j - 1];
}
data[i - 1] = x;
length++;
}
template <class T, int N>
T SeqList<T, N>::Delete(int i)
{
if ((i < 1) || (i > length)) throw"位置异常";
if (length == 0) throw"下溢";
T temp = data[i - 1];
for (int j = i; j < length; j++)
{
data[j - 1] = data[j];
}
length--;
return temp;
}
template<class T, int N>
int SeqList<T, N>::Locate(T x)
{
data[0] = x;
for (int i = length; data[i] != x; i--)
return i;
}
template<class T, int N>
void SeqList<T, N>::PrintList()
{
if (length == 1)
{
cout << data[0];
}
else
{
for (int i = 0; i < length - 1; i++)
{
cout << data[i] << " ";
}
cout << data[length-1];
}
cout << endl;
}
template<class T, int N>
void SeqList<T,N>::Operation(char ch)
{
int x;
T y;
switch (ch)
{
case 'i':
cin >> x >> y;
Insert(x, y);
break;
case 'd':
cin >> x;
Delete(x);
break;
case 'l':
cin >> y;
x=Locate(y);
cout << x << endl;
break;
case 'p':
PrintList();
break;
}
}
int main(void)
{
SeqList<int, 100>a;
SeqList<char, 100>b;
SeqList<double, 100>c;
char ch1, ch2;
while (cin >> ch1)
{
cin >> ch2;
switch (ch1)
{
case 'a':a.Operation(ch2);
break;
case 'b':b.Operation(ch2);
break;
case 'c':c.Operation(ch2);
break;
}
}
return 0;
}
locate函数为何要 data[0] = x;????
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!