IEnumerator接口实现遍历泛型中的元素的问题

朝三慕四 2010-12-05 01:43:57

public class SeqList<T>:IListDS<T>
{
private int maxsize;
private T[] data;
private int last;
//构造器
public SeqList(int MaxSize)
{
this.data = new T[MaxSize];
this.maxsize = MaxSize; //线性表的最大容量
this.last = -1; //指向线性表中的最后一个元素
}

//
/// <summary>
/// 清空操作
/// </summary>
public void Clear()
{
this.last = -1;
}

///删除操作
public T Delete(int i)
{
T temp = default(T);
if (IsEmpty() || i < 1 || i > last+1)
{
Console.WriteLine("无法删除,线性表为空或位置不合法");
return temp;
}

if (i == last + 1)
{
temp=data[last--];
return temp;
}
else
{
temp = data[i - 1];
for (int j = i-1; j <= last&&i<=last;i++, j++)
{
data[j]=data[i];
}
--last;
}

return default(T);

}
..............

public IEnumerator GetEnumerator()
{
//this.data
IEnumerator Ienumerator = data.GetEnumerator();

return Ienumerator;

}
/// <summary>
/// 遍历线性表中的元素
/// </summary>
public void PrintSeqList()
{
for (int i = 0; i <= last; i++)
{
if (i == 10)
Console.WriteLine();
Console.Write(data[i]+" ");
}
Console.WriteLine();
}


因为删除元素时只是将线性表中的元素移动实际并没有删除...
当我用foreach 遍历线性表中的元素并输出时,删除的元素也输出了...怎么改写public IEnumerator GetEnumerator()
使得用foreach遍历时只输出data[0]到data[last]....
...全文
195 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
朝三慕四 2010-12-05
  • 打赏
  • 举报
回复
构造器的注释写错了...应该写在字段那的...

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧