自己编写的一个向量线性表的程序,出现“遇到问题需要关闭”???
我自己写的一个程序,编译没有错误,但是运行完后会出现“Vector.h遇到问题需要关闭”,这是什么原因啊??下面是头文件Vector.h
#include<iostream>
#define DefaultSize 100;
template<class T>
class Vector
{
private:
T * elements;
int ArraySize,VectorLength;
public:
Vector(int sz);
~Vector(void){delete [] elements;}
int GetLength(void){return VectorLength;};
T Getnode(int i);
int Find(T & x);
bool Insert(T & x,int i);
bool Remove(int i);
void Intersection(T & Va,T & Vb);
void Union(T & Va,T & Vb);
};
template<class T >
Vector<T>::Vector(int sz)
{
if(sz<0)
{
cerr<<"input a right number,please "<<endl;
}
else {
ArraySize = sz;
elements = new T[ArraySize];
VectorLength = 0;
}
}
template<class T >
T Vector<T>::Getnode(int i)
{
if( i<0 || i>VectorLength)
{
return NULL;
}
else
{
return elements[i];
}
}
template<class T>
int Vector<T>::Find(T & x)
{
for(int i=0;i<VectorLength;i++)
{
if(elements[i] == x)
return i;
}
return -1;
}
template<class T>
bool Vector<T>::Insert(T & x,int i)
{
if(i<0 || i>VectorLength || VectorLength == ArraySize)
{
cerr<<"input a rigth number"<<endl;
return false;
}
else
{
VectorLength++;
for(int j = VectorLength-1;j>=i;j++)
{
elements[j] = elements[j-1];
}
elements[i] = x;
return true;
}
}
template<class T>
bool Vector<T>::Remove(int i)
{
if(i<0 || i>VectorLength)
{
cerr<<"input a right number "<<endl;
return false ;
}
else
{
for(int j = i;j<VectorLength-1;j++)
{
elements[j] = elements[j+1];
}
VectorLength--;
return true;
}
}
template<class T>
void Vector<T>::Intersection(T & Va,T & Vb)
{
int n = Va.GetLength();
int m = Vb.GetLength();
for(int i= 0;i<m;i++)
{
T x = Vb.Getnode(i);
int k = Va.Find(x);
if(k==-1)
{
Vb.Remove(i);
m--;
}
}
}
template<class T>
void Vector<T>::Union(T & Va,T & Vb)
{
int n = Va.GetLength();
int m = Vb.GetLength();
for(int i=0;i<m;i++)
{
T x = Vb.Getnode(i);
int k= Va.Find(x);
if(k==-1)
{
Va.Insert(x,n);
n++;
}
}
}
下面是主程序main
#include<iostream>
#include"Vector.h"
using namespace std;
int main()
{
int n,s,m;
cout<<"请输入人数:";cin>>n;
cout<<endl;
cout<<"请输入从第几个人开始:";cin>>s;
cout<<endl;
cout<<"请输入报到何数为止:";cin>>m;
cout<<endl;
int k=1;
Vector<int> P(n);
for(int i=0;i<n;i++)
{
P.Insert(k,i);
k++;
}
int sl=s;
for(int j=n;j>=1;j++)
{
sl = (sl+m-1)%j;
if(sl==0)sl=j;
int w=P.Getnode(sl-1);
P.Remove(sl-1);
P.Insert(w,n-1);
}
int a;
int b;
for(b=0;b<n;b++)
{
a = P.Getnode(b);
cout<<a<<" ";
}
return 0;
}
这是有关数据结构的线性表的。。