小弟在用C#做顺序表是有点问题请高手指教,代码如下:
class Sqlist<T>
{
T[] data;
int maxsize;
int last; public T this[int index]
{
get {return data [index ];}
set {data [index ]=value ;}
}
public int Last
{
get {return last ;}
}
public int MaxSize
{
get {return maxsize ;}
set {maxsize =value ;}
}
public Sqlist (int size)
{
data =new T[size];
maxsize =size ;
last =-1;
}
public int GetLength
{get {return last +1;}} public void ClearList()
{
last =-1;
}
public bool IsEmpty()
{
return (last ==-1)?true :false ;
}
public bool IsFull()
{
return (maxsize ==last +1)?true :false ;
}
public void Append(T item)
{
if (IsFull ())
return ;
data [++last]=item ;
}
public void Insert(T item, int i)
{
for (int j=last+1; j>=i-1 ; j--)
data [j]=data [j-1];
data [i-1]=item ;
++last ;
}
public T Delect(int i)
{
T D=default (T);
if (IsEmpty ())
return D; if (i==last +1)
D =data[last--];
else
{
D =data [i-1];
for (int j=i ;j <=last ;j++)
{
data [j]=data [j+1];
}
}
last --;
return D ;
}
public T GetElem(int i)
{
return data [i];
}
/* public int Locate(T item)
{
int i;
for (i=0; i<=last ;++i)
{
if (ValueType.ReferenceEquals ==data [i])
break ;
}
return i;
if (i>last )
return -1;
}*/
}
/*……*/之间的有错误!请不吝赐教!感激不尽!
class Sqlist<T>
{
T[] data;
int maxsize;
int last; public T this[int index]
{
get {return data [index ];}
set {data [index ]=value ;}
}
public int Last
{
get {return last ;}
}
public int MaxSize
{
get {return maxsize ;}
set {maxsize =value ;}
}
public Sqlist (int size)
{
data =new T[size];
maxsize =size ;
last =-1;
}
public int GetLength
{get {return last +1;}} public void ClearList()
{
last =-1;
}
public bool IsEmpty()
{
return (last ==-1)?true :false ;
}
public bool IsFull()
{
return (maxsize ==last +1)?true :false ;
}
public void Append(T item)
{
if (IsFull ())
return ;
data [++last]=item ;
}
public void Insert(T item, int i)
{
for (int j=last+1; j>=i-1 ; j--)
data [j]=data [j-1];
data [i-1]=item ;
++last ;
}
public T Delect(int i)
{
T D=default (T);
if (IsEmpty ())
return D; if (i==last +1)
D =data[last--];
else
{
D =data [i-1];
for (int j=i ;j <=last ;j++)
{
data [j]=data [j+1];
}
}
last --;
return D ;
}
public T GetElem(int i)
{
return data [i];
}
/* public int Locate(T item)
{
int i;
for (i=0; i<=last ;++i)
{
if (ValueType.ReferenceEquals ==data [i])
break ;
}
return i;
if (i>last )
return -1;
}*/
}
/*……*/之间的有错误!请不吝赐教!感激不尽!
{
int i;
for (i = 0; i <= last; ++i)
{
if (ValueType.ReferenceEquals(item, data[i])) return i;
}
return -1;
}
return -1;
没什么就是你这个位置判断不合适
说白了就是逻辑没理清楚