#include <cassert>
#include <iostream>
using namespace std;
//定义的顺序表类
template <class T>
class SqList
{
private:
static const int MAX;
int count;
T data[MAX];
public:
SqList()
:count(0)
{
}
T& get(int idx)
{
assert(idx >= 0 && idx < count);
return data[idx];
}
SqList<T>& insert(int idx, T elem)
{
assert(count < MAX);
assert(idx >= 0 && idx <= count);
int i;
int j;
for(i = count - 1; i >=idx; i--)
data[i + 1] = data[i];
data[idx] = elem;
++count;
return *this;
}
T remove(int idx) //删除下标为idx的元素
{
assert(idx >=0 && idx < count);
int i;
int j;
T elem = data[idx];
for(i = idx; i < count - 1; i++)
data[i] = data[i + 1];
--count;
return elem;
}
T remove(int i, int k) //删除从下标i开始的第k个元素
{
return remove(i + k - 1);
}
SqList<T>& push(T elem)
{
return insert(count, elem);
}
SqList<T>& operator <<(T elem)
{
return push(elem);
}
T& operator[] (int idx)
{
return get(idx);
}
int capacity() const
{
return count;
}
void output() const
{
int i;
for(i = 0; i < count; i++)
cout << data[i] << " " << endl;
cout << endl;
}
};
template <class T>
const int SqList<T>::MAX = 20;
int main()
{
SqList<int> sq;
sq << 2 << 3 << 4 << 5;
sq.output();
sq.insert(1, 11);
sq.output();
cout << "删除了: " << sq.remove(1,3) << endl;
sq.output();
return 0;
}
匿名回答于2024-05-25 17:21:57