64,654
社区成员
发帖
与我相关
我的任务
分享
void print_list(ostream& out)const
{
for(int i =0;i<n;i++){
out << data[i] << " ";
}
}
friend ostream& operator<<(ostream& out, const list<T> x )
{
x.print_list(out);
return out;
}
#include <iostream>
using namespace std;
class out_bounds{};
class no_mem{};
template<typename T>
class List
{
private:
int n ;
int max_size;
T *data;
public:
List(int max_list_size =10)
{
max_size = max_list_size;
data = new T[max_list_size];
n = 0;
}
~List()
{
delete[] data;
}
bool empty()const
{
return n==0;
}
int size()
{
return n;
}
int locate(const T& x)const
{
for(int i=0;i<n;i++)
{
if(data[i]==x)
return ++i;
}
return 0;
}
bool retrieve(int k, T& x)const
{
if(k<1 || k>n) return false;
x = data[k-1];
return true;
}
List<T>& insert(int k,const T& x)
{
if(k<0 || k>n) throw out_bounds();
if(n==max_size)throw no_mem();
for(int i= n-1;i>=k;i--)
{
data[i+1]=data[i];
}
data[k]=x;
n++;
return *this;
}
List<T>& erase(int k, T& x)
{
if(retrieve(k,x))
{
for(int i =k;i < n ; i++)
data[i-1] = data[i];
n--;
return *this;
}
else
{
throw out_bounds();
}
}
template<typename T>
friend ostream& operator<<(ostream& out, const List<T>& x);
};
template<typename T>
ostream& operator<<(ostream& out, const List<T>& x)
{
for(int i = 0;i < x.n; i++)
{
out << x.data[i] << " ";
}
return out;
}
int main(void)
{
List<int> lst;
lst.insert(0, 0);
lst.insert(1, 1);
cout << lst << endl;
return 0;
}
void print_list(ostream& out)const
{
for(int i =0;i<n;i++){
out << data[i] << " ";
}
}
friend ostream& operator<<(ostream& out, const list<T> x )
{
x.print_list(out);
return out;
}
friend ostream& operator<<(ostream& out, const list<T> x )
{
for(int i =0;i<n;i++)
{
out << data[i] << " ";
}
return out;
}
#include <iostream>
using namespace std;
class out_bounds{};
class no_mem{};
template<typename T>
class list{
private:
int n ;
int max_size;
T *data;
public:
list(int max_list_size =10)
{
max_size = max_list_size;
data = new T[max_list_size];
n = 0;
}
~list(){delete[] data;}
bool empty()const{return n==0;}
int size(){return n;}
int locate(const T& x)const
{
for(int i=0;i<n;i++){
if(data[i]==x) return ++i;
}
return 0;
}
bool retrieve(int k, T& x)const
{
if(k<1 || k>n) return false;
x = data[k-1];
return true;
}
list& insert(int k,const T& x)
{
if(k<0 || k>n) throw out_bounds();
if(n==max_size)throw no_mem();
for(int i= n-1;i>=k;i--){
data[i+1]=data[i];
}
data[k]=x;
n++;
return *this;
}
list& erase(int k, T& x)
{
if(retrieve(k,x)){
for(int i =k;i < n ; i++)
data[i-1] = data[i];
n--;
return *this;
}else{
throw out_bounds();
}
}
void print_list(ostream& out)const
{
for(int i =0;i<n;i++){
out << data[i] << " ";
}
}
friend ostream& operator<<(ostream& out, const list<T> x )
{
x.print_list(out);
return out;
}
};